1、new/delete是c++的操作符,而malloc/free是c中的函式。
2、new做兩件事,一是分配記憶體,二是呼叫類的建構函式;同樣,delete會呼叫類的析構函式和釋放記憶體。而malloc和free只是分配和釋放記憶體。
3、new建立的是乙個物件,而malloc分配的是一塊記憶體;new建立的物件可以用成員函式訪問,不要直接訪問它的位址空間;malloc分配的是一塊記憶體區域,用指標訪問,可以在裡面移動指標;new出來的指標是帶有型別資訊的,而malloc返回的是void指標。
4、new/delete是保留字,不需要標頭檔案支援;malloc/free需要標頭檔案庫函式支援。
我們看一看malloc/free和new/delete如何實現物件的動態記憶體管理,見示例。
class obj
~obj()
void initialize()
void destroy() };
void usemallocfree()
void usenewdelete()
類obj的函式initialize模擬
了建構函式的功能,函式destroy模擬了析構函式的功能。函式usemallocfree中,由於malloc/free不能執行建構函式與析構函式,必須呼叫成員函式initialize和destroy來完成初始化與清除工作。函式usenewdelete則簡單得多。
這只是個例子,不會有人用malloc/free來建立類物件。另外,new和delete配套使用,new和delete配套使用。
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 無法滿足動態物件的要求。物件在建立的同時要自動執行建構函式,物件消亡之前要自動執行析...