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 their equivalent (such as reference variables in Java and .NET). An alternative way to allocate memory is Stack-Based Memory Allocation.