new/delete與malloc/free的區別
1、new/delete在管理記憶體的同時會呼叫類的建構函式和析構函式。
malloc/free僅僅實現了記憶體的分配和釋放,沒有呼叫類的建構函式和析構函式。
2、new/delete是c++語言的運算子關鍵字。
malloc/free是c/c++語言的標準庫函式。——在使用的時候需要標頭檔案庫函式支援。
3、通過new建立的物件具有型別,而malloc的返回值為void*,需要進行強制型別轉換。
classa *a= new classa ;
classa *a=( classa *a)malloc(sizeof( classa ));
4、new申請記憶體失敗時,會呼叫new_handler處理函式。
而malloc申請記憶體失敗時,僅僅返回null,不會進行任何善後處理。
new的三種形態
classa *a= new classa ;
這個語句,完成了三個操作:
1、通過operator new 申請記憶體
2、使用placement new呼叫建構函式(簡單型別如int等 ,忽略此步)
3、返回記憶體指標
在程式設計時,new的表示式中使用,則在delete表示式中也使用;
在new的表示式中沒有使用,則在delete表示式中一定不要使用。
但是在遇到typedef型別物件時,要清楚知道該用哪一種delete。
比如:typedef int arrimatrix[4];——————定義了int 型大小為4的乙個陣列的別名 :arrimatrix;
int * parrimatrix=new arrimatrix;
delelte arrimatrix;
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 無法滿足動態物件的要求。物件在建立的同時要自動執行建構函式,物件消亡之前要自動執行析...