How does dlmalloc coalesce chunks?

Viewed 399

Here is a detailed description of the dlmalloc algorithm: http://g.oswego.edu/dl/html/malloc.html

A dlmalloc chunk is bookended by some metadata, which includes information about the amount of space in the chunk. Two contiguous free chunks might look like

[metadata | X bytes free space | metadata ][metadata | X bytes free space | metadata]
                Block A                                     Block B

In that case we want to coalesce block B into block A. Now how many bytes of free space should block A report?

I think it should be 2X + 2 size(metadata) bytes, since now the coalesced block looks like:

[metadata | X bytes free space   metadata  metadata   X bytes free space  | metadata]

But I'm wondering if this is correct, because I have a textbook that says the metadata will report 2X bytes without including the extra space we get from being able to write over the metadata.

1 Answers
Related