new與malloc的區別

2022-08-23 03:15:12 字數 442 閱讀 6761

malloc是c的庫函式,從堆區申請記憶體。

(+)new是c++運算子,從自由儲存區申請記憶體。

malloc返回值是void*,需要判斷返回值是否為空指標。如果申請記憶體成功,返回申請的記憶體位址,申請記憶體失敗返回空指標。

使用free()函式釋放記憶體,非空指標只能釋放一次。

(+)new 返回值是申請物件的指標,申請記憶體失敗丟擲std::bad_alloc異常。使用delete釋放普通對像,delete 釋放陣列。

malloc,free函式不能過載,不會呼叫建構函式,釋放的時候不會呼叫析構函式

(+)new,delete可以過載。

(+)申請記憶體的步驟:先new操作符去申請記憶體,然後呼叫建構函式初始化,最後返回指向物件的指標。

(+)釋放記憶體的步驟:先呼叫物件的析構函式,然後再用delete釋放記憶體。

new與malloc的區別

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

new與malloc的區別

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

Malloc與new 的區別

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