Пул-аллокатор (Pool allocator)
Аллокатор, который делит буфер на равные блоки, связанные в список свободных, и выдаёт их в любом порядке за постоянное время.
Когда программа постоянно создаёт и уничтожает объекты одного размера — пули, частицы, сущности, — универсальная куча и медленна, и склонна к фрагментации. Пул-аллокатор заранее делит буфер на блоки фиксированного размера и нанизывает свободные на простой связный список. Выделение — это извлечение первого свободного блока, освобождение — возврат его в начало. Обе операции O(1).
Поскольку все блоки одного размера, их можно переиспользовать в любом порядке, не оставляя дыр, куда ничего не влезает: фрагментация исчезает по построению. Не путайте механизм с пулом объектов — та же идея на уровень выше: там переиспользуют готовые игровые объекты, здесь — «сырые» блоки памяти.