new與malloc的不同

2021-08-18 19:42:35 字數 585 閱讀 5884

new/delete與malloc/free的不同:

①new/delete分配記憶體的位置是自由儲存區,malloc/free分配記憶體的位置是堆

自由儲存區是c++基於new操作符的乙個抽象概念,凡是通過new操作符進行記憶體申請,該記憶體即為自由儲存區

堆是作業系統所維護的一塊特殊記憶體,用於程式的記憶體動態分配

②new記憶體分配成功返回完整型別指標,而malloc是返回void*

型別安全很大情況下等於記憶體安全,new是符合

型別安全

性的操作符

③new記憶體分配失敗時,會丟擲bac_alloc異常,malloc分配記憶體失敗時返回null

除此之外,使用new操作符申請記憶體分配時無須指定記憶體塊的大小,編譯器會根據型別資訊自行計算

而malloc則需要顯式地指出所需記憶體的尺寸

④new是c++操作符,而malloc是函式

new/delete允許過載,malloc/free不允許,這也意味著new/delete的實現可以基於malloc

而malloc的實現不可以去呼叫new

⑤new/delete會呼叫建構函式和析構函式,而malloc/free不會

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