Можно ли создать реализацию пула памяти, которая следует простой логике:
1 - выделить n байтов из пула памяти.
2 - использовать измененный new (); Функция / оператор, который не выделяет память, получает только указатель на начало пула памяти. Таким образом, объекты создаются динамически без накладных расходов.
3 - Когда пул памяти заканчивается, он освобождает то, что от него осталось, и выделяет новый пул памяти
4 - объекты, созданные в первом пуле памяти, оставляются для выбора памяти в зависимости от их размеров. Разница между тем, что было выделено в первом пуле, и тем, что было возвращено при его истощении, восстанавливается объектами после их удаления.
В основном меня беспокоит тот факт, что я понятия не имею, как удалить пул памяти, меньший, чем он был выделен, помня о том, что помимо того, что осталось в конце объекта пула памяти, есть также заголовок ОС для пул памяти, который находится перед первым объектом, выделенным в пуле. Какой подход мне нужен, чтобы убедиться, что нет утечки памяти, что удаление избыточного пула памяти не приведет к удалению объектов, выделенных в нем, и что заголовок для фрагмента пула памяти будет безопасно удален.
Спасибо!
РЕДАКТИРОВАТЬ: обратите внимание, что целью является выделение памяти пулом памяти и освобождение объектами, которые могут иметь различное время жизни. Если это вообще возможно ...