您的位置: 首页 > 软件教程 > C语言教程专题 > C语言指针使用经验总结之悬垂指针

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

7.5分
出处:网络 时间:2011-06-24

您可能感兴趣的话题: C语言  

核心提示:如果将作用域A的变量地址赋给在作用域B的变量指针。当A中相应变量的生存周期结束后

  如果将作用域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成为悬垂指针。

网友评论
多特网友 2012-06-03 21:19:23 回复
这就是所谓的野指针吧
多特网友 2012-06-03 21:19:23 回复
这就是所谓的野指针吧
精品软件课程
更多 >
C++是一种静态数据类型检查的,支持多重编程... [详细]
Java,是由Sun Microsystem... [详细]
Visual Basic是一种由微软公司开发... [详细]
Oracle Database,又名Orac... [详细]
Visual Basic.NET是从 Vis... [详细]
Visual C++微软公司的C++开发工具... [详细]