C 野指標的存在方式和誤區

2022-05-08 22:06:13 字數 770 閱讀 5196

1.

char* x;這樣的一定是野指標,指標宣告時要直接初始化!或者置null也行!

2.

1

intmain()

2

delete x;之後,x就是乙個野指標。

1

intmain()

2

這段**是能執行的,但deletex;之後,x就成為了乙個野指標,輸出的結果是未定義的。這裡我們應該加上:

x=nullptr;

或者malloc之後free掉的指標,也是上面的情況,一定要把指標置null。

3.函式引數為二級指標&p,將p指向了函式中的臨時變數。函式呼叫完畢後,p這個指標就變為了野指標。

1

int f(char**x)

5int

main()

6

呼叫f(&x)結束後,指標x指向的值是未定義的。

牛批的來了,看下面**,感覺會輸出什麼?

1

classt 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後 這樣會釋放它所指向的記憶體 並沒有把它設定為空時產生的...