在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; // 避免悬空指针