3 ms·
Anyone want to take a stab at how malloc actually works? What’s under the hood? What data structures and algorithms does it use?
by blackrock 7y ago
Anyone want to take a stab at how malloc actually works? What’s under the hood? What data structures and algorithms does it use?
- jabl 7y agoIn a comment the blog author says he's using Ubuntu and glibc malloc. And glibc malloc has a threshold (128 kB or thereabouts) where it switches to using mmap(). So in practice this benchmark is a test of how the Linux kernel implements the mmap() syscall, and how the compiler implements the zeroing loop.
- Const-me 7y ago> And glibc malloc has a threshold (128 kB or thereabouts) where it switches to using mmap() Very similar on Windows. In modern CRT, malloc is a thin wrapper over HeapAlloc WinAPI. That one has a threshold (512kb or 1MB depending on 32- or 64-bit process) where it switches to VirtualAlloc.
- pjc50 7y agoK&R actually contains an example malloc()/free() implementation using a "freelist" - i.e. a list of spare memory blocks held as a linked list in the "unallocated" (or de-allocated) blocks. Memory is retrieved from the OS using the ugly sbrk() interface.