c++ - 你在 C++ 的析构函数中调用 delete 吗?

标签 c++ pointers destructor

假设你有这样一个类

  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/

相关文章:

c++ - 在 C++ 的析构函数中允许做什么?

c++ - std::string 实现和表达式模板

c++ - 在 C++ 和优化中缺少返回值的不稳定行为

c - 从文件读取单词时出现段错误

C++——指针值

c++ - strcpy() 导致从 ‘const char*’ 到 ‘char*’ 的无效转换 [-fpermissive]

c++ - 将否定的 double 转换为 int

c++:使用 packaged_task 构建异步

c++ - 如何在 C++ 类中初始化 char *? (sizeof() 总是给出 8)

c++ - 缺少析构函数声明