我有以下简单的课程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
在删除后不为空?
答案 0 :(得分:4)
删除不会更改指针的值,而只会释放它指向的内存。删除后,相应的指针无效。 (删除也会调用析构函数)。
删除有效指针必须始终成功,否则它是未定义的行为。