我有以下简单类 Foo
:
class Foo {
};
然后我尝试运行以下单元测试代码:
Foo* foo = new Foo;
Assert::IsNotNull(foo);
delete foo;
Assert::IsNull(foo); //why is it not null?? I deleted it.
当我删除 foo
时,这个对象的内存被释放,所以 foo
应该指向 nullptr
。
为什么foo
删除后不为null?
最佳答案
删除不会改变指针的值,只会释放它指向的内存。删除后,各自的指针失效。 (删除也会调用析构函数)。
删除一个有效的指针必须总是成功,否则就是未定义的行为。
关于c++ - 了解析构函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43299114/