【问题标题】:C++ Pointers and DestructorsC++ 指针和析构函数
【发布时间】:2022-01-20 21:18:01
【问题描述】:
class Dummy
{
public: 
    int* A{};
    int num{};
public:
    Dummy(int num)
    {
        this->num = num;
        A = new int[num];
    }
    ~Dummy()
    {
        delete[] A;
    }
};

Dummy* dummy()
{
    Dummy* d = new Dummy{ 4 };
    d->A[0] = 1;
    d->A[1] = 2;
    d->A[2] = 3;
    d->A[3] = 4;
    return d;
}
int main()
{
  Dummy* ATT = dummy();
}

当我厌倦了运行这个程序时,这总是在析构函数处显示期望,程序无法继续。这段代码有什么问题...

【问题讨论】:

  • 你的代码没有触发析构函数,你只是泄露了对象。
  • Can't reproduce。无一例外地为我编译和运行。有问题的话,一定是代码没有显示出来。
  • ...这并不意味着它是正确的:-)
  • 您收到的错误信息究竟是什么?你如何编译程序?

标签: c++11


【解决方案1】:

您的代码使用了new()delete(),如今在C++ 中几乎不应该使用它们。请让自己熟悉为您处理内存管理的适当指针类,例如 shared_ptrunique_ptr

【讨论】:

    猜你喜欢
    • 2022-01-01
    • 2021-11-28
    • 1970-01-01
    • 2012-04-17
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    相关资源
    最近更新 更多