**:
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配套使用。
C語言的的free和c 的delete的區別
首先free對應的是malloc delete對應的是new free用來釋放malloc出來動態記憶體,delete用來釋放new出來的動態記憶體空間。應用的區別為 1.陣列的時候int p int malloc 10 sizeof int 釋放的時候 free p 即可 這是因為編譯器對mall...
delete與free的區別
1.delete用於釋放new分配的空間。free用於釋放malloc分配的空間。2.delete 用於釋放new 分配的空間。3.delete 釋放空間時會呼叫相應物件的析構函式。4.呼叫free之前需要檢查需要釋放的指標是否為空。而呼叫delete則不需要。5.兩者最好不要混用。即new分配的空...
C 中delete與delete 的區別
當呼叫del etedelete delete 的時候,系統會自動呼叫已分配的物件的析構函式。當我們用new new new 分配的物件是基本資料型別時,用del etedelete delete 和d el ete delete delete 沒有區別。但是,當分配的物件是自定義物件時,二者不能通...