iOS 野指標和空指標

2022-03-29 00:58:06 字數 566 閱讀 8669

沒有儲存任何記憶體位址的指標就稱為空指標(null指標)

野指標是指向"垃圾"記憶體(不可用記憶體)的指標。野指標是非常危險的

比如說 定義了乙個person 的類,person類有乙個 - (void)setname方法 

person * per = [[person alloc]init];

[per setname]; 這句話的意思就是 給per所指向的person物件傳送乙個setname訊息

[per release];這句**意思是 給per所指向的person物件 傳送一條release訊息,person物件收到release訊息後,會被銷毀,記憶體會被**

[per setname];這句**就會出現野指標錯誤,person物件已經被銷毀了,person所占用的記憶體已經是垃圾記憶體,如果你還去訪問這一塊記憶體,那就會報野指標錯誤。這塊記憶體已經不可用了,也不屬於你了,你還去訪問它,肯定是不合法的。

per = nil;這句**就是把per指標置空,成為空指標

[per setname];此時這句**雖然不報錯,但是是不能被執行的,因為per為空指標。所以setname的方法是不能被呼叫的

空指標和野指標

關於多次free 出現的野指標的原因 指標變數和指標變數所指的記憶體空間變數是兩個不同的概念 free 最主要釋放的指標變數所指的記憶體空間,因為記憶體資源是有限的,很寶貴,需要 利用 但是指標變數本身的值還是之前的指向,未重置成null 所以再次釋放的時候,指向了未知的記憶體區域,產生野指標 避免...

野指標和空指標

1.是取位址符號,是公升維度的,取其右邊變數的位址,如 d取變數d的位址。是取值符號 間接訪問 是降維度的,表示右邊指標變數所指向的變數,如 p表示指標變數p所指向的變數 2.float p d 則 p是變數d,而 p是變數p 即變數d 的位址p,p等價於p.3.在定義指標型別一定要和變數的型別對應...

c 空指標和野指標

野指標不同於空指標,空指標是指乙個指標的值為null,而野指標的值並不為null,野指標會指向一段實際的記憶體,只是它指向 我們並不知情,或者是它所指向的記憶體空間已經被釋放,所以在實際使用的過程中,我們並不能通過指標判空去識別乙個指標是否為野指標。野指標可能指向乙個可用的,但是正在被使用的空間,如...