關於STL原始碼的set new handler

2021-09-12 17:30:19 字數 535 閱讀 7126

在閱讀侯傑的《stl原始碼剖析》的時候,在書中的p45頁遇到一段**,書中並沒有給予詳細的解釋,查閱資料發現網上的解釋並不是那麼盡如人意,在查閱了《effective c++》這本書之後,總結寫出了這篇部落格。書中的「問題**」:

templateinline t* _allocate(ptrdiff_t size,t*);//乙個函式指標

new_handler set_new_handler(new_handler p) throw();

};

從源**中,我們可以看出set_new_handler實際上就是乙個形參和返回值型別都是new_handler的函式。

前面我們提到,當operator new無法分配足夠的記憶體時,set_new_handler函式會被呼叫。那麼這一過程具體是怎麼發生的呢?我們還是通過乙個例子來理解:

void outofmem()

int main()

這下你對set_new_handler的使用和發揮作用的機制更了解了吧。

STL 原始碼閱讀

1 這裡可以看出來,容器將迭代器作為類成員。vectora iteratorite a.begin 容器的成員函式可以返回迭代器,所以迭代器是容器的成員物件。2 個人理解,迭代器是對指標的封裝和提公升,盡可能遮蔽資料結構的底層細節,對外提供統一的操作介面,這些介面跟普通指標的功能類似,比如自增或自減...

STL原始碼簡述

stl是standard template library的簡稱,中文名標準模板庫,惠普實驗室開發的一系列軟體的統稱。從根本上說,stl是一些 容器 的集合,這些 容器 有list,vector,set,map等,stl也是演算法和其他一些元件的集合。這裡的 容器 和演算法的集合指的是世界上很多聰明...

STL原始碼剖析

這兩天略讀完了 stl原始碼剖析 之所以是略讀,就是只看大體,不講具現 這個詞在 深度探析c 物件模型 中比較多 已經看過好幾本c 的書了,感覺c 本身設計的博大精深,而c 編譯器就更是乙個神奇的東西,換句話說,你永遠不知道c 編譯器揹著你做了哪些出乎你意料的事 不扯遠了 我主要是想看stl容器的具...