【Objective-C】09-空指針和野指針

一了袁、什么是空指針和野指針

1.空指針

1> 沒有存儲任何內(nèi)存地址的指針就稱為空指針(NULL指針)
2> 空指針就是被賦值為0的指針鼎天,在沒有被具體初始化之前罢防,其值為0。
Student *s1 = NULL;
Student *s2 = nil;

2.野指針

"野指針"不是NULL指針,是指向"垃圾"內(nèi)存(不可用內(nèi)存)的指針悠垛。野指針是非常危險的线定。
二、野指針和空指針例子
1.首先确买,打開Xcode的內(nèi)存管理調(diào)試開關(guān)斤讥,它能幫助檢測垃圾內(nèi)存



2.自定義Student類,在main函數(shù)中添加下列代碼
Student *stu = [[Student alloc] init];
[stu setAge:10];
[stu release];
[stu setAge:10];
運行程序湾趾,你會發(fā)現(xiàn)第7行報錯了芭商,是個野指針錯誤!


3.接下來分析一下報錯原因
1> 執(zhí)行完第1行代碼后搀缠,內(nèi)存中有個指針變量stu铛楣,指向了Student對象
Student *stu = [[Student alloc] init];


假設(shè)Student對象的地址為0xff43,指針變量stu的地址為0xee45艺普,stu中存儲的是Student對象的地址0xff43簸州。即指針變量stu指向了這個Student對象。
2> 接下來是第3行代碼
[stu setAge:10];

這行代碼的意思是:給stu所指向的Student對象發(fā)送一條setAge:消息歧譬,即調(diào)用這個Student對象的setAge:方法岸浑。目前來說,這個Student對象仍存在于內(nèi)存中缴罗,所以這句代碼沒有任何問題助琐。

3> 接下來是第5行代碼
[stu release];

這行代碼的意思是:給stu指向的Student對象發(fā)送一條release消息。在這里面氓,Student對象接收到release消息后兵钮,會馬上被銷毀,所占用的內(nèi)存會被回收舌界。
(release的具體用法會放到OC內(nèi)存管理中詳細(xì)討論)


Student對象被銷毀了掘譬,地址為0xff43的內(nèi)存就變成了"垃圾內(nèi)存",然而呻拌,指針變量stu仍然指向這一塊內(nèi)存葱轩,這時候,stu就稱為了野指針藐握!

4> 最后執(zhí)行了第7行代碼
[stu setAge:10];

這句代碼的意思仍然是: 給stu所指向的Student對象發(fā)送一條setAge:消息靴拱。但是在執(zhí)行完第5行代碼后,Student對象已經(jīng)被銷毀了猾普,它所占用的內(nèi)存已經(jīng)是垃圾內(nèi)存袜炕,如果你還去訪問這一塊內(nèi)存,那就會報野指針錯誤初家。這塊內(nèi)存已經(jīng)不可用了偎窘,也不屬于你了乌助,你還去訪問它,肯定是不合法的陌知。所以他托,這行代碼報錯了!

4.如果改動一下代碼仆葡,就不會報錯

復(fù)制代碼

1 Student *stu = [[Student alloc] init];
2
3 [stu setAge:10];
4
5 [stu release];
6
7 stu = nil;
8
9 [stu setAge:10];


復(fù)制代碼

注意第7行代碼赏参,stu變成了空指針,stu就不再指向任何內(nèi)存了



因為stu是個空指針浙芙,沒有指向任何對象登刺,因此第9行的setAge:消息是發(fā)不出去的,不會造成任何影響嗡呼。當(dāng)然纸俭,肯定也不會報錯。

5.總結(jié)
1> 利用野指針發(fā)消息是很危險的南窗,會報錯揍很。也就是說,如果一個對象已經(jīng)被回收了万伤,就不要再去操作它窒悔,不要再嘗試給它發(fā)消息。
2> 利用空指針發(fā)消息是沒有任何問題的敌买,也就是說下面的代碼是沒有錯誤的:
[nil setAge:10];

轉(zhuǎn)載:http://www.cnblogs.com/mjios/archive/2013/04/22/3034788.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末简珠,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子虹钮,更是在濱河造成了極大的恐慌聋庵,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芙粱,死亡現(xiàn)場離奇詭異祭玉,居然都是意外死亡,警方通過查閱死者的電腦和手機春畔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進店門脱货,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人律姨,你說我怎么就攤上這事振峻。” “怎么了择份?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵铺韧,是天一觀的道長。 經(jīng)常有香客問我缓淹,道長哈打,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任讯壶,我火速辦了婚禮料仗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘伏蚊。我一直安慰自己立轧,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布躏吊。 她就那樣靜靜地躺著氛改,像睡著了一般。 火紅的嫁衣襯著肌膚如雪比伏。 梳的紋絲不亂的頭發(fā)上胜卤,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天,我揣著相機與錄音赁项,去河邊找鬼葛躏。 笑死,一個胖子當(dāng)著我的面吹牛悠菜,可吹牛的內(nèi)容都是我干的舰攒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼悔醋,長吁一口氣:“原來是場噩夢啊……” “哼摩窃!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起芬骄,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤猾愿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后德玫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體匪蟀,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年宰僧,在試婚紗的時候發(fā)現(xiàn)自己被綠了材彪。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡琴儿,死狀恐怖段化,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情造成,我是刑警寧澤显熏,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站晒屎,受9級特大地震影響喘蟆,放射性物質(zhì)發(fā)生泄漏缓升。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一蕴轨、第九天 我趴在偏房一處隱蔽的房頂上張望港谊。 院中可真熱鬧,春花似錦橙弱、人聲如沸歧寺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽斜筐。三九已至,卻和暖如春蛀缝,著一層夾襖步出監(jiān)牢的瞬間顷链,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工内斯, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蕴潦,地道東北人。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓俘闯,卻偏偏與公主長得像潭苞,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子真朗,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1.空指針 1>沒有存儲任何內(nèi)存地址的指針就稱為空指針(NULL指針) 2>空指針就是賦值為0的指針此疹,在沒有被具體...
    zhaihongxia閱讀 687評論 0 0
  • 一些基礎(chǔ)的知識,經(jīng)痴谏簦混淆蝗碎,特整理下 空指針: 1. 沒有存儲任何內(nèi)存地址的指針就稱為空指針(NULL指針)旗扑。 2....
    劉應(yīng)閱讀 5,721評論 4 20
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法眠菇,內(nèi)部類的語法袱衷,繼承相關(guān)的語法,異常的語法致燥,線程的語...
    子非魚_t_閱讀 31,641評論 18 399
  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 1,721評論 0 9
  • “子非魚焉知魚之樂艳悔。” 每當(dāng)面對主流價值觀的評價或者關(guān)心時抡锈,我會用這句話來為自己鼓氣。是呀一罩,我覺得自己過得還不錯,...
    dolin閱讀 208評論 0 1