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). The alternative way to allcate memory is called Stack-Based Memory Allocation.