分配器_(C++)

在C + + 編程中 ， 分配器  是C + + 標準庫的重要組成部分 。 C++ 的庫中定義了多種被統稱爲 “ 容器 ” 的數據結構 （ 如鏈表 、 集合等 ） ， 這些容器的共同特徵之一 ， 就是其大小可以在程序的運行時改變 ； 爲了實現這一點 ， 進行動態內存分配就顯得尤爲必要 ， 在此分配器就用於處理容器對內存的分配與釋放請求 。 換句話說 ， 分配器用於封裝標準模板庫 （ STL ） 容器在內存管理上的低層細節 。 默認情況下 ， C++ 標準庫使用其自帶的通用分配器 ， 但根據具體需要 ， 程序員也可自行定製分配器以替代之 。 分配器最早由作爲C + + 標準模板庫 （ Standard Template Library ， 簡稱STL ） 的一部分發明 ， 其初衷是創造一種能 “ 使庫更加靈活 ， 並能獨立於底層數據模型的方法 ” ， 並允許程序員在庫中利用自定義的指針和 ； 但在將標準模板庫納入C + + 標準時 ， C++ 標準委員會意識到對數據模型的完全抽象化處理會帶來不可接受的性能損耗 ， 爲作折中 ， 標準中對分配器的限制變得更加嚴格 ， 而有鑑於此 ， 與斯特潘諾夫原先的設想相比 ， 現有標準所描述的分配器可定製程度已大大受限 。 雖然分配器的定製有所限制 ， 但在許多情況下 ， 仍需要用到自定義的分配器 ， 而這一般是爲封裝對不同類型內存空間 （ 如共享內存與已回收內存 ） 的訪問方式 ， 或在使用內存池進行內存分配時提高性能而爲 。 除此以外 ， 從內存佔用和運行時間的角度看 ， 在頻繁進行少量內存分配的程序中 ， 若引入爲之專門定製的分配器 ， 也會獲益良多 。