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