c++ - 删除悬挂指针时会发生什么?

标签 c++

我听说这是未定义的行为。

但实际上发生了什么?

是崩溃还是其他情况也可能发生?

是否有可能进入死循环>如果有,那是什么时候发生的?

最佳答案

当您出于任何原因访问“悬挂指针”时,可能会发生坏事,什么也不会发生,或者“事情”可能会发生。这完全取决于正在发生的事情。例如:

int* intp = new int;
*intp = 8;
delete intp;
std::cout << "intp: " << *intp << std::endl;

这可能会打印 8,它可能会打印一些随机数,或者它可能会崩溃。这完全取决于内存被删除后发生了什么。

这就是它被称为未定义行为的原因。知道将要发生什么的方式为零。

关于c++ - 删除悬挂指针时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34071359/

相关文章:

c++ - 声明嵌套命名空间 `std` 是否合法 C++?

c++ - 使用 Armadillo 库时如何增加显示的位数

c++ - 如何使用 std::array 模拟 C 数组初始化 "int arr[] = { e1, e2, e3, ... }"行为?

c++ - boost::shared_ptr 需要单个头文件

C++:计算 HashMap 中相等比较的次数

c++ - 我的第一个 C++ 程序需要一些帮助(简单)

c++ - SQL Server 从扩展存储过程捕获错误

c++ - 如何显示网页

c++ - 如何从派生类实例化基类中的数组?

c++:这个插入表达式是做什么的,当作为函数参数传递时它是如何工作的?