All blocks have a 4 8 byte header and a
4 8 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 60 bits of
the header/footer and the 3 4 lower bits of the
size are implied and are 0. This means the block size is a multiple
of 8 16.
The payload is the portion of the block between the header and footer.
The payload must begin at an 8 16 byte address
boundary; that is, the payload address must be a multiple of
8 16.