@startuml scale 620 height top to bottom direction skinparam backgroundColor transparent skinparam shadowing false skinparam defaultFontName Monospace skinparam defaultFontSize 10 skinparam classBorderColor #2c7794 skinparam classBackgroundColor #edf6fa skinparam ArrowColor #8095a1 title A2 STRUCTURE — in-band metadata and address order class "01 Block header" as HEADER { next : BlockLink_t* size : size_t } class "Allocated block" as ALLOC { 02 header + 13 byte request aligned total = 32 bytes payload begins after header } class "03 Free remainder" as REM { own header size = 224 bytes } HEADER *-- ALLOC : precedes payload ALLOC -down-> REM : split preserves 256 class "04 Address-ordered free list" as LIST { previous < inserted < current } class "05 Right neighbour" as RIGHT { block + block.size == current } class "06 Left neighbour" as LEFT { previous + previous.size == block } REM -down-> LIST : insert by address LIST -down-> RIGHT : join first RIGHT -down-> LEFT : then join left note right of LIST Ordering makes both physical neighbours locally visible. end note @enduml