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.