new delete與malloc free的區別

2021-09-12 18:01:47 字數 775 閱讀 7189

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