国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
關(guān)于new/delete 與free/malloc,指針與引用
一。 new/delete 與 malloc/free 的區(qū)別
1。new自動計算需要分配的空間,而malloc需要手工計算字節(jié)數(shù)
2。new是類型安全的,而malloc不是,比如:
int* p = new float[2]; // 編譯時指出錯誤
int* p = malloc(2*sizeof(float)); // 編譯時無法指出錯誤
------ 以上兩點只是改進,但以下兩點malloc就無能為力了
new operator 由兩步構(gòu)成,分別是 operator new 和 construct
3。 operator new對應(yīng)于malloc,但operator new可以重載,可以自定義內(nèi)存分配策略,甚至不做內(nèi)存分配,甚至分配到非內(nèi)存設(shè)備上。而malloc無能為力
4。 new將調(diào)用constructor,而malloc不能;delete將調(diào)用destructor,而free不能。

通常 new 時干兩件事,a. 為對應(yīng)變量(或數(shù)組)分配內(nèi)存。b. 調(diào)用相關(guān)構(gòu)造函數(shù)。而 malloc() 只是為對應(yīng)變量(或數(shù)組)分配內(nèi)存。而且當(dāng)失敗時表現(xiàn)不一樣,malloc 失敗返回 NULL,而 new 失敗拋出異常,用返回值判斷 malloc 是否成功絕對正確,而用返回的值判斷是否是 NULL 來判斷對應(yīng) new 是否成功不是總是可靠(標準未規(guī)定)。
對應(yīng)于 new 干的 delete 時也是干兩件事 a. 調(diào)用對應(yīng)對象的析構(gòu)方法,b. 釋放對應(yīng)變量占用內(nèi)存,free 只是釋放對應(yīng)的內(nèi)存。
在 C++ 中可以重載 new 和 delete 操作符號(全局的或類自己的),而 malloc、free 無法重載。

new ,delete是c++對malloc,free的擴展?;究梢赃@樣理解:
new 相當(dāng)于:
T *ptr = (T) malloc( sizeof(T) ); //申請沒有初始化的內(nèi)存
ptr->T::T(); //調(diào)用構(gòu)造函數(shù)初始化這塊內(nèi)存
delete 相當(dāng)于:
ptr->T::~T(); //調(diào)用析構(gòu)函數(shù)
free(ptr);//釋放這塊內(nèi)存
二。指針和引用的區(qū)別
1.從現(xiàn)象上看:指針在運行時可以改變其所指向的值,而引用一旦和某個對象綁定后就不再改變
2.從內(nèi)存分配上看:程序為指針變量分配內(nèi)存區(qū)域,而引用不分配內(nèi)存區(qū)域
3.從編譯上看:程序在編譯時分別將指針和引用添加到符號表上,符號表上記錄的是變量名及變量所對應(yīng)地址。指針變量在符號表上對應(yīng)的地址值為指針變量的地址值,而引用在符號表上對應(yīng)的地址值為引用對象的地址值。符號表生成后就不會再改,因此指針可以改變指向的對象(指針變量中的值可以改),而引用對象不能改。
 
 
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
C/C 內(nèi)存泄漏-原因、避免以及定位
C語言動態(tài)存儲分配
編程中國
C語言中動態(tài)數(shù)組的實現(xiàn)
虎牙技術(shù)面 C ,問得真細節(jié)。。
深入探析C語言內(nèi)存分配原理(上):理解內(nèi)存使用的魔力密碼
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服