new delete與malloc free的區別

2021-08-20 12:22:53 字數 561 閱讀 8519

new/delete與malloc/free的區別

new/delete是c++操作符,malloc/free是庫函式

new分配記憶體按照資料型別進行分配,malloc分配記憶體按照大小分配

new在動態分配記憶體的時候可以初始化物件,呼叫其建構函式,delete在釋放記憶體時呼叫物件的析構函式。

而malloc只分配一段給定大小的記憶體,並返回該記憶體首位址指標,如果失敗,返回null。

new/delete可以過載,而malloc不行

new返回的是指定物件的指標,而malloc返回的是void*,因此malloc的返回值一般都需要進行型別轉化

對於資料c++定義new專門進行動態陣列分配,用delete進行銷毀。new會一次分配記憶體,然後多次呼叫建構函式;delete會先多次呼叫析構函式,然後一次性釋放

new如果分配失敗了會丟擲bad_malloc的異常,而malloc失敗了會返回null。因此對於new,正確的姿勢是採用try…catch語法,而malloc則應該判斷指標的返回值。為了相容很多c程式設計師的習慣,c++也可以採用new nothrow的方法禁止丟擲異常而返回null;

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