new和malloc的區別

2021-10-03 03:05:55 字數 504 閱讀 7091

new和malloc的區別

1、new分配記憶體按照資料型別進行分配,malloc分配記憶體按照指定的大小分配;

2、new返回的是指定物件的指標,而malloc返回的是void*,因此malloc的返回值一般都需要進行型別轉換

3、new不僅分配一段記憶體,而且會呼叫建構函式,malloc不會。

4、new分配的記憶體要用delete銷毀,malloc要用free來銷毀,delete銷毀的時候會呼叫物件的析構函式,而free則不會。

5、new是乙個操作符可以過載,malloc是乙個庫函式

6、malloc分配的記憶體不夠的時候,可以用realloc擴容。擴容的原理?new沒有這樣操作。

7、new如果分配失敗了會丟擲bad_malloc的異常,而malloc失敗了會返回null。

8、申請陣列時,new[ ]一次分配所有記憶體,多次呼叫建構函式,搭配使用delete[ ],delete[ ]多次呼叫析構函式,銷毀陣列中的每個物件。而malloc則只能sizeof(int)*n。

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