read the transcript!
your program has memory
10MB: program binary
587 MB: heap
the heap is what your allocator manages
Your memory allocator (malloc) is responsible for 2 things.
THING 1: keep track of what memory is used/free.
THING 2: Ask the OS for more memory!
malloc: oh no! I’m being asked for 40 MB and I don’t have it.
malloc: can I have 60 MB more?
OS: here you go!
your memory allocator’s interface
- malloc(size_t size): allocate size bytes of memory & return a pointer to it.
- free (void* pointer): mark the memory as unused (and maybe give back to the OS)
- realloc(void pointer, size_t size): ask for more/less memory for pointer.
- Calloc (size-t members, size_t size): allocate array + initialize to 0.
malloc tries to fill in for space memory when you ask
your code: can I have 512 bytes of memory?
malloc isn’t magic! it’s just a function!
you can always: - use a different malloc library like jemalloc or tcmalloc (easy!) - implement your own malloc (harder)