解釋代碼:
#include <iostream.h>
int main(){
int *pInt = new int;
*pInt=10;
cout<<*pInt<<endl;
delete pInt;
pInt=0;
*pInt=20; // oh no, this was deleled.
cout<<*pInt<<endl;
return 0;
}
//Compile this program successfully,but when running it, collapse.
迷途指針也叫懸浮指針,失控指針,是對一個指針delete後---這樣會釋放它所指向的內存---並沒有把它設置爲空時產生的.而後,如果你沒有賦值就試圖再次使用該指針,引起的結果是不可預料的.
當delete一個指針時,實際上僅是讓編譯器釋放內存,但指針本身依然存在。這時它就是一個迷途指針。
當使用以下語句時,可以把迷途指針改爲空指針:
MyPtr=0;
通常,如果在刪除一個指針後又把它刪除了一次,程序就會變得非常不穩定,任何情況都有可能發生。但是如果你只是刪除了一個空指針,則什麼事都不會發生,這樣做非常安全。
使用迷途指針或空指針(如MyPtr=0)是非法的,而且有可能造成程序崩潰。如果指針是空指針,儘管同樣是崩潰,但它同迷途指針造成的崩潰相比是一種可預料的崩潰。這樣調試起來會方便的多。