C 記憶體分配new和malloc的區別

2022-06-16 19:45:15 字數 436 閱讀 4711

這裡有一篇講的很詳細new和malloc的區別

總結一下:

1.new/delete是操作符,malloc/free是函式

2.malloc分配記憶體需指定大小,且只能是一般資料型別,分配成功返回void*,需要強制型別轉換,分配失敗返回null,需手動檢查是否分配成功;new分配記憶體無需指定大小,可以為類物件,分配成功返回特定型別指標,分配失敗丟擲異常。

3.new分配記憶體,一般型別可以指定初始化,未初始化的保留其在記憶體中的原值;物件會呼叫其預設建構函式,也可以指定建構函式。

4.delete物件的指標時會呼叫其析構函式,而free則無法呼叫;delete指標之後一般還保留其原來的記憶體位址,再次使用出錯,所以delete完之後需要賦值為null。

5.c++保留malloc的原因是c++有時需要使用c編寫的庫,而c中只能使用malloc,如果使用new會出現錯誤。

C 記憶體 new與malloc分配記憶體區別

一關於記憶體 1 記憶體分配方式 記憶體分配方式有三種 1 從靜態儲存區域分配。內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在 例如全域性變數,static變數。2 在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些存 儲單元自動被釋放。棧...

C 記憶體 new與malloc分配記憶體區別

1 記憶體分配方式 記憶體分配方式有三種 1 從靜態儲存區域分配。內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在 例如全域性變數,static變數。2 在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些存 儲單元自動被釋放。棧記憶體分配運算...

c 記憶體分配(new和delete)

c中malloc和free是函式,包含在stdlib.h標頭檔案中,分配成功返回指標,失敗返回空指標。與new的區別是 1,malloc與free是c c語言的標準庫函式,new delete是c 的運算子。它們都可用於申請動態記憶體和釋放記憶體。2,對於非內部資料型別的物件而言,光用maloc f...