CH維克托TRS 分配器 CH維克托TRS 分配器
在C++編程中,,分配器(英語:allocator)是C++標準庫的重要組成部分。C++的庫中定義了多種被統(tǒng)稱為“容器”的數(shù)據(jù)結(jié)構(gòu)(如鏈表,、集合等),,這些容器的共同特征之一,就是其大小可以在程序的運行時改變,;為了實現(xiàn)這一點,,進行動態(tài)內(nèi)存分配就顯得尤為必要,在此分配器就用于處理容器對內(nèi)存的分配與釋放請求,。換句話說,,分配器用于封裝STL容器在內(nèi)存管理上的低層細節(jié)。默認情況下,,C++標準庫使用其自帶的通用分配器,,但根據(jù)具體需要,程序員也可自行定制分配器以替代之,。
分配器早由亞歷山大·斯特潘諾夫作為C++標準模板庫(Standard Template Library,,簡稱STL)的一部分發(fā)明,其初衷是創(chuàng)造一種能“使庫更加靈活,,并能獨立于底層數(shù)據(jù)模型的方法”,,并允許程序員在庫中利用自定義的指針和引用類型;但在將標準模板庫納入C++標準時,,C++標準委員會意識到對數(shù)據(jù)模型的*抽象化處理會帶來不可接受的性能損耗,,為作折中,標準中對分配器的限制變得更加嚴格,,而有鑒于此,,與斯特潘諾夫原先的設想相比,現(xiàn)有標準所描述的分配器可定制程度已大大受限,。
雖然分配器的定制有所限制,,但在許多情況下,仍需要用到自定義的分配器,,而這一般是為封裝對不同類型內(nèi)存空間(如共享內(nèi)存與已回收內(nèi)存)的訪問方式,,或在使用內(nèi)存池進行內(nèi)存分配時提高性能而為。除此以外,,從內(nèi)存占用和運行時間的角度看,,在頻繁進行少量內(nèi)存分配的程序中,若引入為之專門定制的分配器,,也會獲益良多,。 [1]