- new分配內存按照數據類型進行分配,malloc分配內存按照指定的大小分配;
- new返回的是指定對象的指針,而malloc返回的是void*,因此malloc的返回值一般都需要進行類型轉化。
- new不僅分配一段內存,而且會調用構造函數,malloc不會。
- new分配的內存要用delete銷燬,malloc要用free來銷燬;delete銷燬的時候會調用對象的析構函數,而free則不會。
- new是一個操作符可以重載,malloc是一個庫函數。
- malloc分配的內存不夠的時候,可以用realloc擴容。擴容的原理?new沒用這樣操作。
- new如果分配失敗了會拋出bad_malloc的異常,而malloc失敗了會返回NULL。
- 申請數組時: new[]一次分配所有內存,多次調用構造函數,搭配使用delete[],delete[]多次調用析構函數,銷燬數組中的每個對象。而malloc則只能sizeof(int) * n。
C++中new和malloc的區別(C++面試常問題目)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
2019/10/12面試總結
只会HelloWolrd
2020-07-07 10:39:58
一隻青蛙一次可以跳1級臺階,也可以跳兩級,跳上一個n級臺階有多少種方法?
找个特立不独行的名
2020-07-06 12:34:12
memcpy,memset內部函數實現
#include<iostream>using namespace std;/*memcpy函數用於資源內存(src指向的內存)拷貝到目標內存(des
找个特立不独行的名
2020-07-06 12:34:12
c++面試必須知道的問題
1. 面向對象的程序設計思想是什麼? 答:把數據結構和對數據結構進行操作的方法封裝形成一個個的對象。 2. 什麼是類? 答:把一些具有共性的對象歸類後形成一個集合,也就是所謂的類。 3.
SzMing
2020-07-04 21:22:06
智能指針有沒有內存泄露的情況?
SunkingYang
2020-07-04 17:58:03
C++ STL中,map和set有什麼區別,分別又是怎麼實現的?
SunkingYang
2020-07-04 17:58:03
進程與線程的概念、區別及各自通信方式
SunkingYang
2020-07-04 17:58:03
爲什麼析構函數必須是虛函數?爲什麼C++默認的析構函數不是虛函數?
SunkingYang
2020-07-04 17:58:03
如何解決智能指針的內存泄漏
SunkingYang
2020-07-04 17:57:53
C++四種類型轉換(reinterpret_cast、dynamic_cast、const_cast、static_cast)描述
SunkingYang
2020-07-04 17:57:53
二分查找(C++實現,遞歸,非遞歸)
小黄同学的爸爸
2020-06-30 00:46:56
劍指Offer第3題(二維數組中的查找)
小黄同学的爸爸
2020-06-30 00:46:56
快速排序(C++實現、遞歸、非遞歸)
小黄同学的爸爸
2020-06-30 00:46:46
歸併排序(C++實現、遞歸、非遞歸)
小黄同学的爸爸
2020-06-30 00:46:45