C++ - 定义自定义析构函数时程序崩溃

C++ - program crashes when defining custom destructor

我有一个 class 这样的:

class Foo{
public:
    Foo* next = nullptr;

    Foo() = default;

    Foo(Foo *next){
        Foo::next = new Foo(*next);
    }

    Foo(const Foo &copy){
        next = new Foo(*copy.next);
    }


    ~Foo(){
        delete next;
    }
}

它可以编译,但是当我在任何地方实例化 class 时,程序崩溃了。使用调试器时,在 delete next.

处触发 "breakpoint trap"

这是为什么?

编辑:

问题是,有些情况下 next 可以设置为在 class 之外创建的指针。我假设您可以删除在任何地方创建的指针。

您的指针 next 未初始化,指向 某些东西 未知。 delete 将(很可能,如果你幸运的话)尝试删除它。确保指针指向用 new 分配的内存或者是 nullptr.