如果將作用域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成為懸垂指針。
*