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