new和malloc的區別

2021-09-29 14:48:36 字數 554 閱讀 6925

特性new/delete

malloc/free

屬性關鍵字,需要編譯器支援

庫函式,需要標頭檔案支援

返回型別

物件型別的指標

void*,需要強轉為我們需要的型別

記憶體分配失敗

丟擲異常

返回null

是否呼叫構造/析構函式

呼叫不呼叫

函式過載

允許不允許

分配記憶體的區域

自由儲存區(c++基於new操作符的乙個抽象概念,凡是new申請的記憶體都為自由儲存區)

堆上對陣列處理

提供了專門的new和delete

使用者計算陣列大小後分配記憶體

new和malloc是否可以相互呼叫

可呼叫不可呼叫

已分配記憶體的擴容

無法直觀的處理

使用realloc函式進行記憶體重新分配,實現擴容

處理記憶體不足

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

無法通過使用者**處理

引數無需指定記憶體塊的大小

需明確指出所需記憶體尺寸

new和malloc的區別

1 new 是c 中的操作符,malloc是c 中的乙個函式 2 new 不止是分配記憶體,而且會呼叫類的建構函式,同理delete會呼叫類的析構函式,而malloc則只分配記憶體,不會進行初始化類成員的工作,同樣free也不會呼叫析構函式 3 記憶體洩漏對於malloc或者new都可以檢查出來的,...

malloc和new的區別

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

new 和 malloc 的區別

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