Heap memory

Along with Stack memory, programs make use of heap memory during runtime.

Heap memory does not use a standardised data structure and can be accessed from any point within the program.

Whereas stack memory with it’s LIFO structure has memory management built-in when programs allocate memory from the heap they must manually deallocate it when it is no longer required. This process of “freeing memory” is known as garbage collection. In a language like C, this is the explicit concern of the programmer and is not abstracted away. Failure to properly manage garbage collection is what causes Memory leaks.

Heap memory is used in combination with the stack since a given heap memory allocation address is stored as a stack variable during runtime. It points to the heap memory address whilst not being that memory itself.

Here is an example of managing heap memory allocation in C:

void * data;
data = malloc(512)

The first line assigns a special pointer variable (indicated by void * rather than int or str) . This is a variable only holds a memory address. The malloc method requests 512 bytes that it wants to assign to the data variable. It will return the address of the first byte in the newly allocated memory. data will then refer to the address on the stack that holds the address allocation on the heap.