The Heap is that segment of system memory that is allocated to a running application, where memory could be dispensed for the variables, class, instance etc. Given a pointer to any of the allocated block, the OS can look in either way to find the block sufficiently huge to fill a dynamic memory allocation. The blocks that are allocated on the heap are special data structure that consist of (1) A pointer to the end of the past block, (2) a pointer to the end of this block, (3) the allocated block may change in size contingent upon its utilization, (4) a pointer to the start of this block, and (5) a pointer to the following block.
