In '''Heap Based Memory Allocation''', the memory is allocated from a large pool of unused memory area called the ''heap'' dynamically. Space requirement is calculated during allocation at run-time and allocated memory areas life cycle does not depend on the procedure entry/exit. The allocated area is reached indirectly, by pointers (or reference variables in Java and .NET). The alternative way to allcate memory is called [[Stack-Based Memory Allocation]].