new和malloc的區別

2021-06-25 18:14:25 字數 673 閱讀 7709

1. malloc是

庫函式,在c++程式中,要用到malloc函式,必須包含malloc.h。malloc函式的原型是:void *malloc( size_t size ),其中,size是分配的空間大小。該函式返回乙個void型別的指標,因此,在用malloc函式時,往往需要進行資料型別的強制轉換:

int *pm = (int*)malloc(2);

myclass *po1 = (myclass *)malloc(2); //myclass是乙個自定義的類

new是c++的乙個

運算子,一般用法如下:

int *p = new int[10];

myclass *po = new myclass;

2. 在分配空間時,malloc只是分配了指定大小的空間,並沒有初始化,

沒有呼叫類的建構函式

。而new不僅分配了空間,同時進行了初始化工作,呼叫了該物件的建構函式。

3. 由於malloc

和new

都是在堆上分配的空間,

無法自動釋放

,需要呼叫

free/delete

釋放空間。

malloc

分配的空間用

free

釋放,而

new分配的空間用

delete

釋放。

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