懸垂指針

懸垂指針

指向曾經存在的對象,但該對象已經不再存在了,此類指針稱為懸垂指針。結果未定義,往往導致程式錯誤,而且難以檢測。

基本介紹

  • 中文名:懸垂指針
  • 外文名:Dangling pointer
  • 避免方法:引入智慧型指針
  • 定義:指向曾經存在的對象
  • 導致問題程式錯誤,而且難以檢測。
例子,避免方法,

例子

#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;    system("pause");}//輸出為://*p = 10//一秒鐘後,fun()中的i變數的存儲空間被釋放, p所指對象的值為://*p = 1245056//Press any key to continue
可見,fun()運行完一秒鐘後,p成為懸垂指針。
調試“懸垂指針”調試“懸垂指針”

避免方法

引入智慧型指針可以防止垂懸指針出現。一般是把指針封裝到一個稱之為智慧型指針類中,這個類中另外還封裝了一個使用計數器,對指針的複製等操作將導致該計數器的值加1,對指針的delete操作則會減1,值為0時,指針為NULL

相關詞條

熱門詞條

聯絡我們