c++ 关于指针释放的问题

如下图所示:
c++ 关于指针释放的问题_第1张图片
程序为指针a申请了一块内存,然后将指针a赋给指针b,此时a和b都指向的同一块内存地址。接着delete b,并将b置为空,断点走到18行处,此时变量r是能被赋值的,只是r的值可能是9,也可能是其它的垃圾数据。
因为所谓delete b,意思是释放了对a和b所指向内存的所有权(即内存被操作系统回收了),但此时a和b没置nullptr前仍指向这块内存地址,这块内存地址可能不存在了,也可能被其它程序利用了,因此int r = *a就具有不确定性,所谓未定义行为,也就成了野指针。

你可能感兴趣的:(C++,内存释放)