Распределение бассейна - это схема распределения памяти, которая очень быстрая, но ограничена в ее использовании. Дополнительные сведения о распределении бассейна (также называемые simple segregated storage, см. в концепции и Simple Segregated Storage).
Использование бассейнов дает вам больше контроля над тем, как память используется в вашей программе. Например, у вас может быть ситуация, когда вы хотите выделить кучу небольших объектов в один момент, а затем достичь точки в вашей программе, где ни один из них больше не нужен. Используя интерфейсы бассейна, вы можете запустить их деструкторы или просто сбросить их в забвение; интерфейс бассейна гарантирует, что нет утечки системной памяти.
Бассейны обычно используются, когда есть много распределения и распределения небольших объектов. Другим распространенным использованием является ситуация выше, где многие объекты могут быть выброшены из памяти.
В целом, используйте Бассейны, когда вам нужен более эффективный способ управления необычной памятью.
pool_allocator
является более общим решением, ориентированным на эффективное обслуживание запросов на любое количество смежных частей.
fast_pool_allocator
также является решением общего назначения, но ориентировано на эффективное обслуживание запросов за один кусок за один раз; он будет работать для смежных частей, но не так хорошо, как pool_allocator.
Если вы серьезно обеспокоены производительностью, используйте fast_pool_allocator
при работе с контейнерами, такими как std::list
, и используйте pool_allocator
при работе с контейнерами, такими как std::vector
.