1.
char* x;這樣的一定是野指標,指標宣告時要直接初始化!或者置null也行!
2.
1intmain()
2
delete x;之後,x就是乙個野指標。
1intmain()
2
這段**是能執行的,但deletex;之後,x就成為了乙個野指標,輸出的結果是未定義的。這裡我們應該加上:
x=nullptr;
或者malloc之後free掉的指標,也是上面的情況,一定要把指標置null。
3.函式引數為二級指標&p,將p指向了函式中的臨時變數。函式呼叫完畢後,p這個指標就變為了野指標。
1int f(char**x)
5int
main()
6
呼叫f(&x)結束後,指標x指向的值是未定義的。
牛批的來了,看下面**,感覺會輸出什麼?
1classt 2
9int
x;10
};11
1213
intmain()
14
一定覺得這**會呼叫失敗吧,實際上會呼叫成功。。
delete this之後,p變為野指標了。但是p依然是個位址。
然後系統就會按照t類的物件空間模型去訪問,並輸出它認為其中x所在空間的值。
當然這個值就不一定是啥了,但確實不會報錯。。。
c 空指標和野指標
野指標不同於空指標,空指標是指乙個指標的值為null,而野指標的值並不為null,野指標會指向一段實際的記憶體,只是它指向 我們並不知情,或者是它所指向的記憶體空間已經被釋放,所以在實際使用的過程中,我們並不能通過指標判空去識別乙個指標是否為野指標。野指標可能指向乙個可用的,但是正在被使用的空間,如...
C 基礎 指標 野指標和free
野指標的重複釋放問題 最近發現了這樣乙個問題,乙個指標釋放兩次之後,若在中間不置空,會報invalid address specified to rtlvalidateheap 無效的堆位址 錯誤。include include include using namespace std int mai...
c 野指標(迷途指標)的理解
date 2018.12.16 直接上程式 include using namespace std int main int pint new int pint 10 cout pint迷途指標也叫懸浮指標,失控指標,是對乙個指標delete後 這樣會釋放它所指向的記憶體 並沒有把它設定為空時產生的...