Two frequently used terms when working with memory allocators are arena and memory pool. We will not distinguish between these terms in this book. By arena, we mean a block of contiguous memory including a strategy for handing out parts of that memory and reclaiming it later on. This could technically also be called an allocator, but we will use that term to refer to allocators used by the standard library. The custom allocator we will develop later will be implemented using the arena we create here.
There are some general strategies that can be used when designing an arena that will make allocations and deallocations likely to perform better than malloc() and free():
- Single-threaded: If we know that an arena will only ...