在STL源碼剖析中有提到operator new 這個函數(shù),然后也有說道new 的下面會調(diào)用operator new,博主覺得這段話有問題,原因有二:
1、operator 是操作符的關(guān)鍵字,比如我們要重載一個操作符,我們的寫法肯定是 operator xxx(xxx,xxx....),所以書中提到的調(diào)用operator new,我并不贊同,我覺得new 等同于 operator new
2、在C/C++里面,調(diào)用一般是涉及到函數(shù)層次的,誰調(diào)用誰,調(diào)試的時候也是有跳轉(zhuǎn)的,然而博主在調(diào)試的時候,并沒有看到new所在的函數(shù),反而是直接跳到了operator new。下面給出博主的調(diào)試信息。
成都創(chuàng)新互聯(lián)公司提供高防服務(wù)器租用、云服務(wù)器、香港服務(wù)器、資陽托管服務(wù)器等
博主不太會截視頻,就用一系列的圖片來說明吧!
我們再看一下 數(shù)組的形式
這里進去了operator new[] 里層調(diào)用了operator new,但是這里并沒有看到 new [] 所在的函數(shù),而是直接跳轉(zhuǎn)到了這里,可見new [] 等同于 operator new[],那么可以推測new 也是等同于 operator new的
還有一點,在我另一個博客(CSDN)也有吐槽過,操作符可以用函數(shù)名來調(diào),也可以用typedef 以后的名稱來調(diào)。
所以書中說new 調(diào)了operator new,太草率,沒有足夠的證據(jù)。
當(dāng)然書中說 operator new 調(diào)了malloc,這點暫時是沒錯的,也請不要懷疑。
以上為博主自己的拙見,不足之處還請指正。