malloc
As apposed to other versions, the malloc
in GNU libc does not
round up block sizes to powers of two, neither for large nor for small
sizes. Neighboring chunks can be coalesced on a free
no matter
what their size is. This makes the implementation suitable for all
kinds of allocation patterns without generally incurring high memory
waste through fragmentation.
Very large blocks (much larger than a page) are allocated with
mmap
(anonymous or via /dev/zero
) by this implementation.
This has the great advantage that these chunks are returned to the
system immediately when they are freed. Therefore, it cannot happen
that a large chunk becomes "locked" in between smaller ones and even
after calling free
wastes memory. The size threshold for
mmap
to be used can be adjusted with mallopt
. The use of
mmap
can also be disabled completely.
Go to the first, previous, next, last section, table of contents.