1. delete 用於釋放 new 分配的空間;free 用來釋放 malloc 分配的空間 2. delete [] 用於釋放 new [] 分配的空間 3. delete 釋放空間的時候會調用 相應的析構函數 同時,new時調用構造函數,而malloc不會,它只是分配記憶體。 4. 調用free ...
1. delete 用於釋放 new 分配的空間;free 用來釋放 malloc 分配的空間
2. delete [] 用於釋放 new [] 分配的空間
3. delete 釋放空間的時候會調用 相應的析構函數 同時,new時調用構造函數,而malloc不會,它只是分配記憶體。 4. 調用free 之前需要檢查 需要釋放的指針是否為空,使用delete 釋放記憶體則不需要檢查指針是否為NULL 5. malloc與free是C++/C語言的標準庫函數,new/delete是C++的運算符。它們都可用於申請動態記憶體和釋放記憶體。 (?)對於非內部數據類型的對象而言,光用malloc/free無法滿足動態對象的要求。對象在創建的同時要自動執行構造函數,對象在消亡之前要自動執行析構函數。由於malloc/free是庫函數而不是運算符,不在編譯器控制許可權之內,不能夠把執行構造函數和析構函數的任務強加於malloc/free。因此C++語言需要一個能完成動態記憶體分配和初始化工作的運算符new,以及一個能完成清理與釋放記憶體工作的運算符delete。