Most developers use malloc without thinking much about what happens underneath.
This project is an attempt to explore that layer by building a memory allocator from scratch in C.
The allocator implements malloc , free , calloc , and realloc without relying on libc’s heap functions. It focuses on:
Thread safety
Per-thread caching (tcache)
Efficient free block management using bins
mmap-based memory growth
Handling large allocations separately
This article breaks down the design, implementation decisions, performance characteristics, and limitations of the allocator.
What is a Memory Allocator?
A memory allocator is responsible for managing dynamic memory at runtime.
Functions like malloc , free , calloc , and realloc are part of this layer.
At a high level, an allocator:
Requests memory from the operating system (e.g., using mmap )
Splits that memory into smaller blocks
Tracks which blocks are free or in use
Reuses freed blocks to avoid unnecessary system calls
This layer sits between user…