malloc free與new delete的區別

2021-05-27 08:44:51 字數 677 閱讀 4023

1  相同點:都可用於申請動態記憶體和釋放記憶體

2  不同本質不同:(1)malloc/free 是c/c++ 庫函式 而new/delete 是c++ 運算子。

對於非內部資料型別的物件而言,malloc/free 無法滿足動態物件的建立。物件建立時要呼叫 建構函式 物件在結束時要呼叫析構函式。

由於malloc/free不是運算子,不再編譯器控制許可權之內,不能把執行建構函式和析構函式的任務交給malloc和free.

原因解釋:建構函式在類建立時會被自動呼叫,在釋放類物件時會自動呼叫析構函式。在編譯器編譯時會自動在程式的相應位置插入構造 函式和析構函式的**。但是malloc/free 只是外部函式,編譯器不會在編譯時在適當的地方自動呼叫,所以「不能把執行建構函式和析構函式的任務交給malloc和free」。

3  實現功能:

malloc 實現記憶體分配

new  實現記憶體分配 而後呼叫建構函式。

malloc與new的區別就在於:如果是malloc,那麼它簡單返回乙個指向分配記憶體的空間

的void *指標,如果是new,那麼在返回void*指標之後,編譯器還會呼叫相應的類的預設建構函式。其中最重要的是:對預設建構函式的呼叫不是operator new進行的,而是編譯器進行的。

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