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 無法滿足動態物件的要求。物件在建立的同時要自動執行建構函式,物件消亡之前要自動執行析...