malloc free與new delete的區別

2021-07-10 02:25:51 字數 659 閱讀 9954

1、malloc/free是函式,c語言本身是不支援過載的。

new/delete是操作符。但是我們可以嘗試過載它們。

2、malloc拿到的只是乙個指標指向的一整塊位址,而new拿到的,卻是乙個乙個的物件。

可以認為,new是申請記憶體,並使用建構函式初始化了它們。

#include "stdafx.h"

#include 

using namespace std;

class test

int val; };

//注意:使用new時,val被初始化為1,而使用malloc時,卻是乙個隨機的數字。

int main()

3、如果申請失敗,malloc返回的指標為空,而new失敗則會被丟擲乙個bad_alloc異常。所以我們通常這樣使用new:

int main()

} catch (...)

return 0; }

而這樣使用malloc:

int main()

else

printf("we can't use this pointer!");

return 0; }

現在,我們大多數時候使用的都是c++的規則,而且new的優點也越發顯現出來,因此經常會選擇new/delete組合。

malloc free與new delete的區別

相同點 都可用於申請動態記憶體和釋放記憶體 不同點 1 操作物件有所不同。malloc與free是c c 語言的標準庫函式,new delete 是c 的運算子。對於非內部資料類的物件而言,光用maloc free 無法滿足動態物件的要求。物件在建立的同時要自動執行建構函式,物件消亡之前要自動執行析...

malloc free與new delete的區別

相同點 都可用於申請動態記憶體和釋放記憶體 不同點 1 操作物件有所不同。malloc與free是c c 語言的標準庫函式,new delete 是c 的運算子。對於非內部資料類的物件而言,光用maloc free 無法滿足動態物件的要求。物件在建立的同時要自動執行建構函式,物件消亡之前要自動執行析...

malloc free與new delete的區別

相同點 都可用於申請動態記憶體和釋放記憶體 不同點 1 操作物件有所不同。malloc與free是c c 語言的標準庫函式,new delete 是c 的運算子。對於非內部資料類的物件而言,光用maloc free 無法滿足動態物件的要求。物件在建立的同時要自動執行建構函式,物件消亡之前要自動執行析...