分配器是C 標準函式庫的重要組成部分,作用是:處理容器對記憶體的分配與釋放請求。換句話說,分配器用於封裝STL容器在記憶體管理上的低層細節。
分配器的作用
在C 程式設計中,分配器(英文:allocator)是C 標準庫的重要組成部分。
C 的庫中定義了多種被統稱為「容器」的資料結構(如鍊錶、集合等),這些容器的共同特徵之一,就是其大小可以在程式的運行時改變;為了實現這一點,進行動態記憶體分配就顯得特別必要,在此分配器就用於處理容器對記憶體的分配與釋放請求。
換句話說,分配器用於封裝STL容器在記憶體管理上的低層細節。
預設情況下,C 標準函式庫使用其自帶的通用分配器,但根據具體需要,程式設計師也可自行自訂分配器以替代之。
分配器最早由亞歷山大·斯特潘諾夫作為C 標準模板庫(Standard Template Library,簡稱STL)的一部分發明,其初衷是創造一種能「使庫更加靈活,並能獨立於底層資料模型的方法”,並允許程式設計師在庫中利用自訂的指標和引用類型;
但在將標準範本庫納入C 標準時,C 標準委員會意識到對資料模型的完全抽象化處理會帶來不可接受的性能損耗,為作折中,標準中對分配器的限制變得更加嚴格,而有鑑於此,與斯特潘諾夫原先的設想相比,現有標準所所描述的分配器可定製程度已大大受限。
雖然分配器的定制有所限制,但在許多情況下,仍需要用到自定義的分配器,而這一般是為封裝對不同類型內存空間(如共享內存與已回收內存)的存取方式,或在使用記憶體池進行記憶體分配時提高效能而為。除此之外,從記憶體佔用和運行時間的角度看,在頻繁進行少量記憶體分配的程式中,若引入為之專門定制的分配器,也會獲益良多。
推薦教學:《c 影片教學》
以上是簡述分配器的作用是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!