Oto szczegółowy opis algorytmu dlmalloc: http://g.oswego.edu/dl/html/malloc.htmlJak dlmalloc łączy cząstki?
dlmalloc porcja jest bookended przez niektórych metadanych, który zawiera informacje o ilości miejsca we fragmencie. Dwa sąsiednie wolne kawałki może wyglądać
[metadata | X bytes free space | metadata ][metadata | X bytes free space | metadata]
Block A Block B
W tym przypadku chcemy łączyć blok B w bloku A. Teraz ile bajtów wolnego miejsca powinno blokować raport?
myślę, że powinno być 2X + 2 size(metadata) bytes
, ponieważ teraz coalesced blok wygląda następująco:
[metadata | X bytes free space metadata metadata X bytes free space | metadata]
Ale zastanawiam się, czy to prawda, bo mam podręcznika, który mówi metadane zgłosi 2X bytes
bez numeru z dodatkową przestrzenią, którą otrzymujemy z możliwości zapisu przez metadane.