Поскольку вы не заботитесь о перераспределении, вы можете использовать линейный распределитель. Выделите огромное количество памяти заранее и сохраните указатель на начало. malloc (x) перемещает указатель выделения вперед на x байтов и возвращает старое значение указателя, delete (x) заглушается. Как упомянуто здесь, другой плакат уже имеет имплиментацию
Распределения располагаются настолько близко, насколько это возможно, выделения выполняются невероятно быстро, и память возвращается в порядке распределения. Когда симуляция завершена, вы просто сбрасываете указатель распределителя на начало памяти и очищаете все имеющиеся у вас указатели извне распределителя на объекты внутри него.
Распределители пулов - отличный выбор, если вы хотите удалять объекты быстрее, чем куча, но не будете упаковывать ваши данные в память так близко и не так быстро. Используйте boost: pool для тех. Это отличный выбор для игр, если у вас есть х байт для хранения, скажем, уровня, и вы готовы выбросить все вместе в одно и то же время.
Кроме того, если вас интересует производительность памяти, см. Что должен знать каждый программист о памяти - PDF . Он охватывает такие вещи, как локальность ссылки и ее влияние на производительность. В частности, вы можете создать пул для каждого типа объектов, которые используются вместе, или объявить ваши объекты как структуру массивов, а не как массив структур