假设你有这样一个类
class Level
{
public:
Level(std::string);
~Level();
private:
Bitmap* map;
}
在类里面你有这个
Level::Level(std::string)
{
map = new Bitmap(path);
}
想知道你能打电话吗
Level::~Level()
{
delete map;
}
因为我担心类是否超出范围并且我没有删除 map 。那岂不是会造成内存泄漏。我是否必须手动调用删除 map 。如果我在程序的构造函数中调用 delete,就会崩溃。
就像我可以在 Level 中添加一个方法,叫做 destroy map 我删除 map 的地方。但是,想知道为什么我不能将 delete 添加到析构函数中。
最佳答案
当 Level
对象超出范围时,将调用其析构函数,因此释放内存很有用,因为不再需要该内存。您还可以使用 unique_ptr
,从而自动执行内存释放。
关于c++ - 你在 C++ 的析构函数中调用 delete 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19802273/