null 指標和迷途指標的區別

來源:互聯網
上載者:User
 

解釋代碼:

#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;

通常,如果在刪除一個指標後又把它刪除了一次,程式就會變得非常不穩定,任何情況都有可能發生。但是如果你只是刪除了一個null 指標,則什麼事都不會發生,這樣做非常安全。

使用迷途指標或null 指標(如MyPtr=0)是非法的,而且有可能造成程式崩潰。如果指標是null 指標,儘管同樣是崩潰,但它同迷途指標造成的崩潰相比是一種可預料的崩潰。這樣調試起來會方便的多。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.