The global pointer
heap_listp
points to the beginning of all the blocks:
- prolog block: size 8, permanently marked allocated (no payload)
- allocated (regular) blocks
- free (regular) blocks
We don't have a linked list of only free blocks or a list of only allocated blocks.
The free and allocated blocks are mixed together in an implicit list.