- The memory allocator keeps track of what is allocated and what
is free.
- When we obtain memory, we must assume that it contains garbage
and initialize it.
- We must not assume that consecutive requests will allocate
contiguous memory blocks.
Freeing memory:
is the programmer's responsibility.
- don't free memory before you are finished with it: it might
become allocated to some other purpose.
- don't forget to free memory when you are finished with it, or it
won't be returned to the global pool.
Fragmentation of memory:
the free parts of memory are not in one contiguous block:
We don't have enough contiguous space to allocate a block
this big: