c 野指標(迷途指標)的理解

2022-03-24 02:43:40 字數 564 閱讀 7496

date: 2018.12.16

直接上程式:

#include using namespace std;

int main()

{ int *pint = new int;

*pint=10;

cout<<*pint迷途指標也叫懸浮指標,失控指標,是對乙個指標delete後---這樣會釋放它所指向的記憶體---並沒有把它設定為空時產生的。而後,如果你沒有賦值就試圖再次使用該指標,引起的結果是不可預料的.

當delete乙個指標時,實際上僅是讓編譯器釋放記憶體,但指標本身依然存在。這時它就是乙個迷途指標。

當使用以下語句時,可以把迷途指標改為空指標:

myptr=

0;

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

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

野指標的理解

如果乙個指標指向的記憶體沒有訪問許可權,或者指向一塊已經釋放掉的記憶體,那麼就無法對該指標進行操作,這樣的指標稱為野指標 wild pointer 請看下面的 include int main 在gcc下執行,輸入乙個字串後會提示段錯誤 segment fault 在vs下執行,輸入乙個字串後會提示...

c 空指標,野指標

當給空指標所指的位址賦值時,會報錯 int p nullptr p 10 int p 野指標,未初始化int p new int delete p 刪除後不知道p指向 include using namespace std class a void a func void void test voi...

迷途指標 new delete

程式設計中有一種很難發現的錯誤是迷途指標。迷途指標也叫懸浮指標 失控指標,是黨對乙個指標進行delete操作後 這樣會釋放它所指向的記憶體 並沒有把它設定為空時產生的。而後,如果你沒有重新賦值就試圖再次使用該指標,引起的結果是不可預料的。空指標和迷途指標的區別?當delete乙個指標的時候,實際上僅...