malloc 和 new 的區別

2021-09-12 12:40:16 字數 795 閱讀 6975

1.new  在 自由儲存區域 開闢空間

malloc  堆上

2.new     返回型別安全

malloc  返回型別不安全(返回void *)

3.new     開闢時不需要計算記憶體開闢的大小

malloc  開闢時需要計算記憶體開闢的大小

4.new     失敗丟擲異常  (bad_alloc)

malloc  失敗返回null

5.new     開闢記憶體的同時可以初始化

malloc  單純開闢記憶體 

//開闢乙個int型別的空間,初始化值為10

int* p = new int(10);

delete p;

//開闢乙個int型別的長度為10的陣列並初始化

int* cp = new int[10]();

delete cp;

//開闢二維陣列malloc

int**parr = (int**)malloc(sizeof(int*) * 10);

for (int i = 0; i < 10; i++)

for (int i = 0; i < 10; i++)

free(parr);

//開闢二維陣列new

int** arr = new int*[10];

for (int i = 0; i < 10; i++)

for (int i = 0; i < 10; i++)

delete arr;

new和malloc的區別

1 new 是c 中的操作符,malloc是c 中的乙個函式 2 new 不止是分配記憶體,而且會呼叫類的建構函式,同理delete會呼叫類的析構函式,而malloc則只分配記憶體,不會進行初始化類成員的工作,同樣free也不會呼叫析構函式 3 記憶體洩漏對於malloc或者new都可以檢查出來的,...

malloc和new的區別

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

new 和 malloc 的區別

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