在C++中,動態分配的內存需要手動釋放
delete
釋放單個對象:int* ptr = new int; // 分配內存
// ... 使用ptr做一些操作
delete ptr; // 釋放內存
delete[]
釋放對象數組:int* arr = new int[10]; // 分配內存
// ... 使用arr做一些操作
delete[] arr; // 釋放內存
智能指針會在離開作用域時自動釋放內存,無需手動操作。
#include<memory>
std::unique_ptr<int> ptr(new int); // 分配內存,并用unique_ptr管理
// ... 使用ptr做一些操作
// 不需要手動釋放內存,當ptr離開作用域時,內存會自動被釋放
請注意,在釋放內存后,務必將指針置為nullptr
,以避免懸掛指針(dangling pointer)問題。
delete ptr;
ptr = nullptr;
或者,使用智能指針時,不需要手動置空。
std::unique_ptr<int> ptr(new int);
// ... 使用ptr做一些操作
ptr.reset(); // 釋放內存并置空