new和malloc的區別

2021-08-21 07:25:24 字數 537 閱讀 4167

①:new/delete是c++關鍵字,需要編譯器支援。malloc/free是庫函式,需要標頭檔案支援。

②:new申請記憶體時無需指定記憶體塊的大小,編譯器會根據型別資訊自行計算。而malloc則需要顯式得指出所需記憶體的尺寸。

③:new操作符記憶體分配成功時,返回的是物件型別的指標,型別嚴格與物件匹配,無需進行型別轉換;malloc記憶體分配返回void*,需要強制型別轉換將void*指標轉換成我們需要的型別。

④:new分配失敗時,會丟擲bac——alloc異常。malloc分配記憶體失敗時返回null。

⑤:new會先呼叫operator new函式,申請足夠的記憶體(通常使用malloc實現)。然後呼叫該型別的建構函式,初始化成員變數,然後返回型別指標;delete會先呼叫析構函式,然後呼叫operator delete釋放記憶體。

malloc/free是庫函式,就是動態的申請和釋放記憶體。

⑥:new/delete可以被過載,malloc不能。

⑦:new操作符從自由儲存區上為動態物件分配記憶體空間,malloc從堆上動態分配記憶體,自由儲存區不等於堆。

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