new和malloc的區別

2021-10-03 06:39:42 字數 721 閱讀 2641

先看下new、delete的實現過程:

//new的實現過程是先分配記憶體再呼叫類的建構函式

//舉個例子:

classa* pclassa =

newclassa()

;//new的實現過程如下:

void

* mem =

operator_new

(sizeof

(classa));

//step1:分配記憶體

pclassa =

static_cast

>

(mem)

;//step2:轉型

pclassa-

>classa::

classa()

;//step3:呼叫建構函式

delete pclassa;

//delete的實現過程如下:

classa::

~classa

(pclassa)

;//step1:析構函式

operator_delete

(pclassa)

;//step2:釋放記憶體

operator_new是標準庫中對malloc的一種封裝,operator_delete是對free的一種封裝。

所以,new和malloc的區別是,new不僅分配記憶體空間,還會呼叫類的析構函式來構造這個物件,也就是往這個物件的記憶體空間中賦初值。

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