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