malloc和new的區別

2021-09-02 03:45:33 字數 903 閱讀 1158

動態申請記憶體時,malloc和free配套使用,new和delete配套使用,下面我們來看看malloc和new有那些區別

1、malloc和free是c語言/ c++中的標準庫函式,new和delete是c++中的關鍵字,它們都可以動態申請記憶體;

2、malloc函式在堆上分配記憶體,new關鍵字在自主訪問區域分配記憶體;

3、malloc函式只分配記憶體,不會做初始化, new關鍵字分配記憶體,還會呼叫類的建構函式進行初始化,釋放空間時delete會呼叫類的析構函式;

4、動態申請記憶體成功時,malloc函式返回的是void *,需要通過強制型別轉換將void *指標轉換成我們所需要的型別,new關鍵字返回的是該物件型別的指標,不需要進行型別轉換;

5、動態申請記憶體時,malloc函式需要乙個引數,這個引數就是需要分配的記憶體位元組數,而使用new關鍵字不需要引數,編譯器會根據型別資訊自行計算;

6、動態申請記憶體失敗時,malloc函式返回的是乙個null指標,new關鍵字會丟擲異常;

7、malloc函式不能開闢常量記憶體,new關鍵字可以開闢常量記憶體;

使用malloc和new動態開闢一維陣列

#include #include int main()

使用malloc和new動態開闢二維陣列

#include #include int main()

for(int i = 0;i < 10;++i)

int **p4 = new int *[10];//使用new動態開闢二維陣列

for(int i = 0;i < 10;++i)

for(int i = 0;i < 10;++i)

delete p4;

return 0;

}

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