Heap1, the default implementation, implements the smallest and simplest heap manager. The heap is managed as a single-linked list of free blocks held in increasing address order. The allocation policy is first-fit by address.
This implementation has low overheads, but the performance
free() grows linearly
with the number of free blocks. The smallest block that can be allocated
is four bytes and there is an additional overhead of four bytes.
If you expect more than 100 unallocated blocks it is recommended
that you use Heap2.