new與malloc的區別

2021-07-15 20:28:56 字數 627 閱讀 7030

看起來,它們的不同只是new比malloc用起來更方便而已。僅僅是這樣嗎?不是嗎?

1)new/delete是c++中的操作符,而malloc/free是c中的標準庫函式,需要庫檔案支援。為了保證程式的可讀性和正確性,new與delete、malloc與free要配對使用;

2)可過載自定義:過載new/delete操作符,可實現在申請記憶體的時候自定義分配策略,如分配後自動初始化等;

3)new/delete可自動呼叫構造/析構函式,而malloc/free不會。

2 用法不同:

1)new不需要程式設計師計算記憶體,而malloc需要程式設計師計算出具體的位元組數;

例如,申請乙個長度為4的int陣列的不同:

int *parr=new int(4)

int *parr=(int*)malloc(4*sizeof(int));

2)new返回的指標型別與申請型別一致,而malloc並不識別申請的記憶體是什麼型別,它只關心申請空間的大小,返回指標型別為void*。

3 new是型別安全的,malloc不是。如:

int *p = new float[2];   //編譯時錯誤

int *p = malloc (2*sizeof(float));  //編譯時無法指出錯誤

new與malloc的區別

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

new與malloc的區別

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

Malloc與new 的區別

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