在C++中,delete
關鍵字的主要作用是釋放動態分配的內存
釋放內存:當你使用new
關鍵字動態分配內存時,需要使用delete
來釋放這些內存。如果不釋放,可能會導致內存泄漏(memory leak),即程序中未正確回收不再使用的內存空間。
調用析構函數:對于類對象,delete
不僅釋放內存,還會自動調用對象的析構函數。這是因為對象可能需要在銷毀之前執行一些清理操作,例如關閉文件、釋放其他資源等。
以下是一個簡單的示例,展示了如何使用new
和delete
:
#include<iostream>
class MyClass {
public:
MyClass() {
std::cout << "Constructor called."<< std::endl;
}
~MyClass() {
std::cout << "Destructor called."<< std::endl;
}
};
int main() {
MyClass* obj = new MyClass(); // 使用new關鍵字動態分配內存并調用構造函數
delete obj; // 使用delete關鍵字釋放內存并調用析構函數
return 0;
}
輸出結果:
Constructor called.
Destructor called.
請注意,在實際編程中,應盡量避免使用裸指針(raw pointers)和手動管理內存?,F代C++提供了智能指針(如std::unique_ptr
和std::shared_ptr
),它們可以自動管理內存,從而減少內存泄漏的風險。