All blocks have a 4 byte header and a 4 byte footer
hd | ft |
The header and footer have the same value.
The value is in two parts:
-
the block size
(which includes the header and footer) -
a bit indicating the block is allocated or free
The block size is in the upper 29 bits of the header/footer and the 3 lower bits of the size are implied and are 0. This means the block size is a multiple of 8.
The payload is the portion of the block between the header and footer.
The payload must begin at an 8 byte address boundary; that is, the payload address must be a multiple of 8.