池分配是一種很是快速的內存分配方案,但其使用受到限制。有關池分配的更多信息(也稱爲簡單隔離存儲,請參閱 池化概念和簡單隔離存儲)。html
使用池能夠更好地控制程序中內存的使用方式。例如,您可能但願在一個點上分配一堆小對象,而後到達程序中的某個點,再也不須要它們。使用池接口,您能夠選擇運行它們的析構函數,或者只是將它們丟棄爲遺忘; 池接口將保證沒有系統內存泄漏。函數
當存在大量小對象的分配和釋放時,一般使用池。另外一種常見用法是上面的狀況,其中許多對象可能會從內存中丟失。
一般,當您須要更有效的方法來執行異常內存控制時,請使用池。性能
pool_allocator
是一種更通用的解決方案,旨在有效地處理對任意數量的連續塊的請求。
fast_pool_allocator
也是一種通用解決方案,但其目的是有效地爲一個塊的請求提供服務; 它適用於連續的塊,但不如pool_allocator
。
若是您嚴重關注性能,在處理相似std::list
容器時使用fast_pool_allocator
,並在處理相似std::vector
的容器時使用pool_allocator
code