bug中最可怕的是野指標,那麼問題來了,野指標是什麼?是如何產生的?為什麼程式設計師會「忘記」?
昨天除錯時,我發現了乙個野指標,由此我明白了。
a的值成了亂碼,而且gcc編譯器並沒有報錯,那麼請看下面的**
那麼我們假設a是指標,一旦我們如同該**一般不讓a指向元素的話,編譯器
必然是會報錯的,那麼我們不如假設int a就是指標,那麼a=0就是指標指向空
位址的操作,也就是說int a就是在定義乙個指標,a=0就是指標在指向0位址
a++就是指標由0位址指向1位址。如果這樣來說的話,那麼一切也都能說的通
了。int a其實就是在定義乙個指標,賦值是指標在指向乙個位址。
如此看來的話,c語言就是型別和指標兩樣東西在操作。
於是,bug的產生也就順理成章了
當然,這只是我個人的一些想法,如有不對的地方請大家指正。
空指標與野指標
首先什麼是空型別呢,空型別就是void,自然,空型別指標就是void void 可以指向任何型別物件的位址,表示這是乙個指標,和位址值有關,但不知道儲存在此位址上的物件的型別,所以在取空型別指標所指向的值的時候,應將空型別指標轉換為對應的指標型別 int a 10 char b a float c ...
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...
空指標和野指標
關於多次free 出現的野指標的原因 指標變數和指標變數所指的記憶體空間變數是兩個不同的概念 free 最主要釋放的指標變數所指的記憶體空間,因為記憶體資源是有限的,很寶貴,需要 利用 但是指標變數本身的值還是之前的指向,未重置成null 所以再次釋放的時候,指向了未知的記憶體區域,產生野指標 避免...