The heap is process memory set aside for dynamic allocation.
A heap memory pool is a large pool of memory which satisfies memory requests by allocating portions from this pool, commonly called the heap or free store. At any given time, some parts of the heap are in use, while some are "free" (unused) and thus available for future allocations.
Examples:
Java objects reside in an area called the heap. The heap is created when the JVM starts up and may increase or decrease in size while the application runs.
In Sybase's Adaptive Server Enterprise, if you make a wide column or row change, the temporary buffer this task uses can be as large as 16K, which is too big to allocate from the stack. Adaptive Server dynamically allocates and frees memory during the task’s runtime.
Since the precise location of the allocation is not known in advance, the memory is accessed indirectly, usually through a pointer reference.