malloc和new的區(qū)別是什么暖释?

  1. malloc與free是C++/C語(yǔ)言的標(biāo)準(zhǔn)庫(kù)函數(shù),new/delete是C++的運(yùn)算符褐荷。它們都可用于申請(qǐng)動(dòng)態(tài)內(nèi)存和釋放內(nèi)存勾效。

  2. 對(duì)于非內(nèi)部數(shù)據(jù)類(lèi)型的對(duì)象而言,光用maloc/free無(wú)法滿足動(dòng)態(tài)對(duì)象的要求叛甫。對(duì)象在創(chuàng)建的同時(shí)要自動(dòng)執(zhí)行構(gòu)造函數(shù),對(duì)象在消亡之前要自動(dòng)執(zhí)行析構(gòu)函數(shù)杨伙。由于malloc/free是庫(kù)函數(shù)而不是運(yùn)算符其监,不在編譯器控制權(quán)限之內(nèi),不能夠把執(zhí)行構(gòu)造函數(shù)和析構(gòu)函數(shù)的任務(wù)強(qiáng)加于malloc/free限匣。 因此C++語(yǔ)言需要一個(gè)能完成動(dòng)態(tài)內(nèi)存分配和初始化工作的運(yùn)算符new抖苦,以一個(gè)能完成清理與釋放內(nèi)存工作的運(yùn)算符delete。注意new/delete不是庫(kù)函數(shù)米死。

  3. C++程序經(jīng)常要調(diào)用C函數(shù)锌历,而C程序只能用malloc/free管理動(dòng)態(tài)內(nèi)存。

  4. 返回類(lèi)型安全性不同 :
    new可以認(rèn)為是malloc加構(gòu)造函數(shù)的執(zhí)行峦筒。new出來(lái)的指針是直接帶類(lèi)型信息的究西。而malloc返回的都是void指針,需要強(qiáng)制類(lèi)型轉(zhuǎn)換換成我們需要的類(lèi)型物喷。

  5. 申請(qǐng)內(nèi)存位置不同:
    new操作符從自由存儲(chǔ)區(qū)(free store)上為對(duì)象動(dòng)態(tài)分配內(nèi)存空間卤材,而malloc函數(shù)從堆上動(dòng)態(tài)分配內(nèi)存。

    • 自由存儲(chǔ)是C++中通過(guò)new與delete動(dòng)態(tài)分配和釋放對(duì)象的抽象概念峦失,而堆(heap)是C語(yǔ)言和操作系統(tǒng)的術(shù)語(yǔ)扇丛,是操作系統(tǒng)維護(hù)的一塊動(dòng)態(tài)分配內(nèi)存。
    • new所申請(qǐng)的內(nèi)存區(qū)域在C++中稱(chēng)為自由存儲(chǔ)區(qū)尉辑。藉由堆實(shí)現(xiàn)的自由存儲(chǔ)帆精,可以說(shuō)new所申請(qǐng)的內(nèi)存區(qū)域在堆上。
    • 堆與自由存儲(chǔ)區(qū)還是有區(qū)別的隧魄,它們并非等價(jià)卓练。
  6. 內(nèi)存分配失敗時(shí)返回值不同:
    new內(nèi)存分配失敗時(shí),會(huì)拋出bac_alloc異常堤器,不會(huì)返回NULL昆庇。

  7. 是否需要指定內(nèi)存大小不同:
    使用new操作符申請(qǐng)內(nèi)存時(shí)不需要顯式的指出所需內(nèi)存塊的的大小,編譯器會(huì)根據(jù)類(lèi)型信息進(jìn)行計(jì)算闸溃;malloc則需要顯示的指出內(nèi)存的尺寸整吆。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拱撵,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子表蝙,更是在濱河造成了極大的恐慌拴测,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件府蛇,死亡現(xiàn)場(chǎng)離奇詭異集索,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)汇跨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén)务荆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人穷遂,你說(shuō)我怎么就攤上這事函匕。” “怎么了蚪黑?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵盅惜,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我忌穿,道長(zhǎng)抒寂,這世上最難降的妖魔是什么掠剑? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮澡腾,結(jié)果婚禮上沸伏,老公的妹妹穿的比我還像新娘。我一直安慰自己动分,他們只是感情好毅糟,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著澜公,像睡著了一般姆另。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上坟乾,一...
    開(kāi)封第一講書(shū)人閱讀 51,292評(píng)論 1 301
  • 那天迹辐,我揣著相機(jī)與錄音,去河邊找鬼甚侣。 笑死明吩,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的殷费。 我是一名探鬼主播印荔,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼低葫,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了仍律?” 一聲冷哼從身側(cè)響起嘿悬,我...
    開(kāi)封第一講書(shū)人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎水泉,沒(méi)想到半個(gè)月后善涨,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡草则,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年钢拧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片畔师。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡娶靡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出看锉,到底是詐尸還是另有隱情,我是刑警寧澤塔鳍,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布伯铣,位于F島的核電站,受9級(jí)特大地震影響轮纫,放射性物質(zhì)發(fā)生泄漏腔寡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一掌唾、第九天 我趴在偏房一處隱蔽的房頂上張望放前。 院中可真熱鬧,春花似錦糯彬、人聲如沸凭语。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)似扔。三九已至,卻和暖如春搓谆,著一層夾襖步出監(jiān)牢的瞬間炒辉,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工泉手, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留黔寇,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓缝裤,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親倘是。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容