當前位置:星座運勢大全官網 - 周易占卜 - 什麽是野指針?什麽是僵屍對象?

什麽是野指針?什麽是僵屍對象?

野生指針和僵屍對象

1.

野生指針

1 & gt;C語言中的野指針:壹個指針變量指向壹個隨機空間,這個指針就是野指針。當我們聲明壹個指針變量時,我們沒有給這個指針變量賦值,所以這個指針變量中的值是壹個隨機垃圾值。

2 & gtOC中的野指針:指針指向的對象已經被釋放,這個指針叫做野指針僵屍對象:壹個被釋放的對象叫做僵屍對象對象回收的本質:對象占用的空間在分配給其他程序之前可以分配給其他對象,其實這個對象還在,數據還在。但是這個空間可以隨時分配給其他程序。

3 & gt僵屍對象:

3.1 & gt;內存中的釋放機制:銷毀壹個對象並不會銷毀那個內存空間,但是該對象占用的空間可以分配給其他對象,數據在分配給其他對象之前仍然存在。

3.2 & gt僵屍對象被釋放的對象稱為僵屍對象。

3.3 & gt通過wild指針訪問的對象是僵屍對象,可能出錯也可能不出錯。當僵屍對象占用的空間沒有分配給其他程序時,不會報錯4 >;所以壹旦指針變成了野指針,就不要通過這個野指針訪問對象的成員,因為這個時候有很多未知數。

4 & gt通過指針訪問對象時,Xcode默認不會檢查對象是否是僵屍,可以啟用Xcode的僵屍對象檢查。在這種情況下,每次通過指針訪問壹個對象,它都會檢查這個對象是否是僵屍對象。如果是僵屍對象,立即報錯。如何啟用僵屍對象的實時檢測-& gt;運行-& gt;編輯管理器-& gt;運行-& gt;

5 & gt既然打開僵屍對象有這麽多好處,為什麽不默認打開呢?僵屍對象壹旦開啟,每次用這個指針訪問對象,都會檢查是否是僵屍對象。這樣會消耗很多性能。

如何避免在對象引用計數變為0的情況下,使用僵屍對象給指針變量賦值nil?

妳不能讓僵屍復活。

[p1發布];//

引用計數器為0,因此對象被釋放。p1是壹個野指針,對象是僵屍。

[p1保留];//

用這句話是不可能復活壹個僵屍對象的。p1是壹個野指針,通過野指針訪問僵屍對象會出錯。