c++指標使用經驗總結之懸垂指標

鴨脖發表於2012-04-21

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


相關文章