C++在回收用 new 分配的單個對象的內存空間時,直接用 delete;回收用 new[] 分配的數組對象的內存空間時,需要用 delete[]。

調用 new 所包含的動作:從系統中申請一塊內存,并調用對象的構造函數;調用 delete 所包含的動作:先調用對象的析構函數,然后將內存歸還系統;調用 new[n] 所包含的動作:申請可容納 n 個對象的空間,并調用 n 次構造函數來初始化這 n 個對象;調用 delete[] 所包含的動作:先調用 n 次對象的析構函數,再將內存歸還系統。

比如下面這段代碼:

delete語句怎么寫?數據庫sql語句大全實例

#include <iostream>using namespace std;class Student {public:Student() {cout << "1. Constructor" << endl;}~Student() {cout << "2. Destructor" << endl;}};int main(){Student* stu = new Student();delete stu;stu = nullptr;cout << "---" << endl;Student* stuArr = new Student[2];delete[] stuArr; // 不要漏了[]stuArr = nullptr;return 0;}

運行結果為:

需要注意的是:若將 delete[] stuArr 改為 delete stuArr,則會導致 stuArr 指向的2個Student對象中的剩余1個未被銷毀,造成內存泄漏。