詳情介紹
品牌 | 其他品牌 | 應用領域 | 醫療衛生,環保,農林牧漁,能源 |
---|
分配器是由亞曆山大·斯特潘諾夫作為C++標準模板庫(Standard Template Library,簡稱STL)的一部分發明,其初衷是創造一種能“使庫更加靈活,並能獨立於底層數據模型的方法”,並允許程序員在庫中利用自定義的指針和引用類型;但在將標準模板庫納入C++標準時,C++標準委員會意識到對數據模型的*抽象化處理會帶來不可接受的性能損耗,為作折中,標準中對分配器的限製變得更加嚴格,而有鑒於此,與斯特潘諾夫原先的設想相比,現有標準所描述的分配器可定製程度已大大受限。
雖然Motrona GV470分配器的定製有所限製,但在許多情況下,仍需要用到自定義的分配器,而這一般是為封裝對不同類型內存空間(如共享內存與已回收內存)的訪問方式,或在使用內存池進行內存分配時提高性能而為。除此以外,從內存占用和運行時間的角度看,在頻繁進行少量內存分配的程序中,若引入為之專門定製的分配器,也會獲益良多。
定義Motrona GV470分配器的主要原因之一是提升性能。利用它可以提高程序的性能,又或提高內存使用效率,亦或兩者兼而有之。默認分配器使用new操作符分配存儲空間,而這常利用C語言堆分配函數(malloc())實現。由於堆分配函數常針對偶發的內存大量分配作優化,因此在為需要一次分配大量內存的容器(如向量、雙端隊列)分配內存時,默認分配器一般效率良好。但是,對於關聯容器與雙向鏈表這類需要頻繁分配少量內存的容器來說,若采用默認分配器分配內存,則通常效率很低。除此之外,基於malloc()的默認分配器還存在許多問題,諸如較差的引用局部性,以及可能造成內存碎片化。
留言詢價