我听说这是未定义的行为。
但实际上发生了什么?
是崩溃还是其他情况也可能发生?
是否有可能进入死循环>如果有,那是什么时候发生的?
最佳答案
当您出于任何原因访问“悬挂指针”时,可能会发生坏事,什么也不会发生,或者“事情”可能会发生。这完全取决于正在发生的事情。例如:
int* intp = new int;
*intp = 8;
delete intp;
std::cout << "intp: " << *intp << std::endl;
这可能会打印 8,它可能会打印一些随机数,或者它可能会崩溃。这完全取决于内存被删除后发生了什么。
这就是它被称为未定义行为的原因。知道将要发生什么的方式为零。
关于c++ - 删除悬挂指针时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34071359/