new與malloc的10點區別

2021-08-09 07:43:39 字數 528 閱讀 6646

將上面所述的10點差別整理成**:

特徵new/delete

malloc/free

分配記憶體的位置

自由儲存區

堆記憶體分配失敗返回值

完整型別指標

void*

記憶體分配失敗返回值

預設丟擲異常

返回null

分配記憶體的大小

由編譯器根據型別計算得出

必須顯式指定位元組數

處理陣列

有處理陣列的new版本new

需要使用者計算陣列的大小後進行記憶體分配

已分配記憶體的擴充

無法直觀地處理

使用realloc簡單完成

是否相互呼叫

可以,看具體的operator new/delete實現

不可呼叫new

分配記憶體時記憶體不足

客戶能夠指定處理函式或重新制定分配器

無法通過使用者**進行處理

函式過載

允許不允許

建構函式與析構函式

呼叫不呼叫

malloc函式 new和malloc的區別

1 申請的記憶體所在位置 new操作符從自由儲存區上為物件動態分配記憶體空間,而malloc函式從堆上動態分配記憶體。自由儲存區是c 基於new操作符的乙個抽象概念,凡是通過new操作符進行記憶體申請,該記憶體即為自由儲存區。而堆是作業系統中的術語,是作業系統所維護的一塊特殊記憶體,用於程式的記憶體...

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...