C语言指针使用经验总结之悬垂指针

来源:互联网 发布:java将map转换成json 编辑:程序博客网 时间:2024/04/27 12:17

如果将作用域A的变量地址赋给在作用域B的变量指针。当A中相应变量的生存周期结束后,会使B的指针出现“悬垂指针”的现象(悬垂指针指向曾经存放对象的内存,但该对象已经不再存在了。悬垂指针往往导致程序错误,而且很难检测出来。)如下代码:

#include<iostream>  #include <windows.h>  using namespace std;  int *p=NULL;  void fun()  {  int i=10;  p=&i;  }  void main()  {  fun();  cout<<"*p= "<<*p<<endl;  Sleep(1000);  cout<<“一秒钟后,fun()中的i变量的存储空间被释放,p所指对象的值为:"<<endl<<"*p= "<<*p<<endl;  }

输出为:


  *p= 10


  一秒钟后,fun()中的i变量的存储空间被释放,p所指对象的值为:


  *p= 1245056


  Press any key to continue


  可见,fun()运行完一秒钟后,p成为悬垂指针。

0 0
原创粉丝点击