首页 > 解决方案 > 删除 ptr C++ 后会发生什么

问题描述

我尝试使用以下代码示例删除 ptr:

int* data = new int(1);

int* p = NULL; 

p = data;

*p = 3;

delete p;

// Prints 3
cout << *p << endl;

//Prints 3    
cout << *data << endl;

最后两行代码打印出 3,我的问题是之后删除了delete p什么?根据最后两行代码打印出来的,好像什么都没删0.0~~

有人请给我解释一下。谢谢大家。

标签: c++pointersprintingdelete-operatordangling-pointer

解决方案


delete在您拥有d 对象后取消引用指针会导致未定义的行为。不要指望任何可预测的行为并避免它。

由于不同的角度和未定义的行为导致的悬空指针的异常读取:可以在其范围之外访问局部变量的内存吗?


推荐阅读