For hard real-time applications, tight provable bounds on the application's worst-case execution time must be derivable.Employing dynamic memory allocation, in general, significantly decreases an application's timing predictability.In consequence, current hard real-time applications rely on static memory management.This thesis studies how the predictability issues of dynamic memory allocation can be overcome and dynamic memory allocation be enabled for hard real-time applications.We give a detailed analysis of the predictability challenges imposed on current state-of-the-art timing analyses by dynamic memory allocation.We propose two approaches to overcome these issues and enable dynamic memory allocation for hard real-time systems: automatically transforming dynamic into static allocation and using a novel, cache-aware and predictable memory allocator. Statically transforming dynamic into static memory allocation allows for very precise WCET bounds as all accessed memory addresses are completely known.However, this approach requires much information about the application's allocation behavior to be available statically.For programs where a static precomputation of a suitable allocation scheme is not applicable, we investigate approaches to construct predictable dynamic memory allocators to replace the standard, general-purpose allocators in real-time applications.We present evaluations of the proposed approaches to evidence their practical applicability.