This allocator allocates memory in regions (multiple of 4 KB for example). Each region is then splitted in blocks. So it doesn't request the memory from the operating system on each call, but only if there are no large enough free blocks in the available regions. Deallocation works in the same way. Deallocation doesn't immediately gives the memory back to the operating system, but marks the appropriate block as free and only if all blocks in the region are free, the complete region is deallocated.
Fast block-based allocator