在stl中,所有的元素都是存放在容器中,容器需要配置空間來儲存這些數值,因此需要用到空間配置器。
記憶體池
chunk_alloc的工作:從記憶體池中取空間給free-list使用。
if(記憶體池水量足夠)
直接調出20個區塊給free
list
else
if(記憶體池水量還足夠提供至少1個區塊)
調出實際能夠**的區塊
else
利用malloc()向堆heap中配置記憶體,為記憶體池注入源頭活水以應付需求。一般申請為需求量的兩倍,再加上隨著配置次數增加而越來越大的附加量
if(heap的空間也不夠)
malloc()失敗,呼叫第一級配置器中的out of memory處理機制,或許有機會釋放其記憶體拿來此處使用。如果可以就成功,否則發出bad_alloc異常。
STL原始碼剖析讀書筆記
一.stl提供六大元件,彼此可以組合套用。1.容器 containers 各種儲存結構,如vector list deque set map,用來存放資料。2.演算法 algorithme 各種常用演算法,如sort search copy erase等。3.迭代器 iterators 扮演容器與演...
《STL原始碼剖析》讀書筆記 三
hashtable 非標準 二叉搜尋樹 任何節點最多只能允許兩個子節點 平衡二叉樹 確保整棵樹的深度為o logn 左右子樹的高度最多差1 setmap multiset 特性與用法與set完全相同,唯一的差別在於它允許鍵值重複,插入的時候用的是rb tree的insert equal 而不是ins...
STL原始碼剖析 讀書筆記(1)
stl即c 標準模板庫,主要由六大部件組成,分別是 分配器 容器 迭代器 演算法 仿函式 介面卡。在講述這些主要部件之前,先來了解一下物件導向程式設計和泛型程式設計,物件導向程式設計 object oriented programming,簡稱oop 企圖將資料和處理資料的方法放到一起,例如,在c ...