在C++中,使用new
關鍵字分配的內存需要手動釋放
int* ptr = new int; // 分配內存
// ... 使用ptr做一些操作 ...
delete ptr; // 釋放內存
int* arr = new int[10]; // 分配內存
// ... 使用arr做一些操作 ...
delete[] arr; // 釋放內存
class MyClass {
// ... 類的定義 ...
};
MyClass* obj = new MyClass; // 分配內存
// ... 使用obj做一些操作 ...
delete obj; // 釋放內存
智能指針會在離開作用域時自動釋放內存,這樣可以防止內存泄漏。
#include <memory>
std::unique_ptr<int> ptr(new int); // 分配內存
// ... 使用ptr做一些操作 ...
// 不需要手動釋放內存,當ptr離開作用域時會自動釋放
請注意,在釋放內存后,務必將指針設置為nullptr
,以避免懸空指針(dangling pointer)問題。
int* ptr = new int;
delete ptr;
ptr = nullptr; // 避免懸空指針