malloc free與new delete簡單講

2021-10-24 11:55:58 字數 1263 閱讀 1359

一:malloc/free(函式)

malloc(memory allocation),意為動態記憶體分配,,從堆中分配和釋放記憶體。

一般形式:

void

*malloc

(int numbytes)

;void

free

(void

*ptr)

;

案例一:

int

*p =

null

; p =

(int*)

malloc(10

*sizeof

(int))

;if(p)

案例二:

int

*p =

null

;int

*q =

null

; p =

(int*)

malloc(10

*sizeof

(int))

; q = p;

if(p)

二:new/delete(運算子)

使用方式:

指標變數名 = new 型別識別符號;

指標變數名 = new 型別識別符號(初始值);

指標變數名 = new 型別識別符號[記憶體單元個數];

案例一:

int

*p =

newint;if

(p !=

null

)//new失敗可能直接報異常,而不是返回null

案例二:

int

*p =

newint(2

);if(p !=

null

)//new失敗可能直接報異常,而不是返回null

案例三:

int

*p =

newint

[100];

//申請100*4個位元組

if(p !=

null

)//new失敗可能直接報異常,而不是返回null

注意:

(1)malloc/free與new/delete必須配套使用

(2)不可多次使用delete來釋放同一塊記憶體,因為這個時候,已經不是把屬於自己的記憶體空間進行釋放了,有可能會出現程式異常。

malloc free與new delete的區別

相同點 都可用於申請動態記憶體和釋放記憶體 不同點 1 操作物件有所不同。malloc與free是c c 語言的標準庫函式,new delete 是c 的運算子。對於非內部資料類的物件而言,光用maloc free 無法滿足動態物件的要求。物件在建立的同時要自動執行建構函式,物件消亡之前要自動執行析...

malloc free與new delete的區別

相同點 都可用於申請動態記憶體和釋放記憶體 不同點 1 操作物件有所不同。malloc與free是c c 語言的標準庫函式,new delete 是c 的運算子。對於非內部資料類的物件而言,光用maloc free 無法滿足動態物件的要求。物件在建立的同時要自動執行建構函式,物件消亡之前要自動執行析...

malloc free與new delete的區別

相同點 都可用於申請動態記憶體和釋放記憶體 不同點 1 操作物件有所不同。malloc與free是c c 語言的標準庫函式,new delete 是c 的運算子。對於非內部資料類的物件而言,光用maloc free 無法滿足動態物件的要求。物件在建立的同時要自動執行建構函式,物件消亡之前要自動執行析...