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 ©){
next = new Foo(*copy.next);
}
~Foo(){
delete next;
}
}
它可以编译,但是当我在任何地方实例化 class 时,程序崩溃了。使用调试器时,在 delete next
.
处触发 "breakpoint trap"
这是为什么?
编辑:
问题是,有些情况下 next
可以设置为在 class 之外创建的指针。我假设您可以删除在任何地方创建的指针。
您的指针 next
未初始化,指向 某些东西 未知。 delete
将(很可能,如果你幸运的话)尝试删除它。确保指针指向用 new
分配的内存或者是 nullptr
.
我有一个 class 这样的:
class Foo{
public:
Foo* next = nullptr;
Foo() = default;
Foo(Foo *next){
Foo::next = new Foo(*next);
}
Foo(const Foo ©){
next = new Foo(*copy.next);
}
~Foo(){
delete next;
}
}
它可以编译,但是当我在任何地方实例化 class 时,程序崩溃了。使用调试器时,在 delete next
.
这是为什么?
编辑:
问题是,有些情况下 next
可以设置为在 class 之外创建的指针。我假设您可以删除在任何地方创建的指针。
您的指针 next
未初始化,指向 某些东西 未知。 delete
将(很可能,如果你幸运的话)尝试删除它。确保指针指向用 new
分配的内存或者是 nullptr
.