我有以下情况。
FooClass* fooPointer = new FooClass();
int main() {
while (/*logic*/) {
if (fooPointer) {
// some logic
}
}
}
class FooClass {
void fooClass::fooMethod() {
if (/*logic*/) {
//logic
delete this;
}
}
}
所以我基本上是在删除这个对象。但是,在下一次迭代中,它仍然在main方法中输入if语句(
if (fooPointer) {
// some logic
}
)。
为什么它不能识别该对象已经通过null检查被删除了?
发布于 2018-10-22 01:46:16
在对象上调用delete
通常会做两件事:
的内存
It 不会将任何内容设置为null,也不会以任何其他方式更改指针的值。这就是为什么你的支票不起作用。
所以如果你想这样做,你就得自己把指针设为空。
https://stackoverflow.com/questions/52918038
复制相似问题