野指針

指針是個(gè)很強(qiáng)大的工具即舌,可是正因?yàn)樗珡?qiáng)大,所以要操作它不是件易事肺樟。操作不當(dāng)造成的野指針檐春,甚至?xí)鹣到y(tǒng)死機(jī)等比較嚴(yán)重的后果。

如果程序定義了一個(gè)指針么伯,就必須要立即讓它指向一個(gè)我們?cè)O(shè)定的空間或者把它設(shè)為NULL疟暖,如果沒(méi)有這么做,那么這個(gè)指針里的內(nèi)容是不可預(yù)知的田柔,即不知道 它指向內(nèi)存中的哪個(gè)空間(即野指針)俐巴,它有可能指向的是一個(gè)空白的內(nèi)存區(qū)域,可能指向的是已經(jīng)受保護(hù)的區(qū)域硬爆,甚至可能指向系統(tǒng)的關(guān)鍵內(nèi)存欣舵,如果是那樣就糟 了,也許我們后面不小心對(duì)指針進(jìn)行操作就有可能讓系統(tǒng)出現(xiàn)紊亂缀磕,死機(jī)了缘圈。所以我們必須設(shè)定一個(gè)空間讓指針指向它劣光,或者把指針設(shè)為NULL,這是怎么樣的一 個(gè)原理呢糟把,如果是建立一個(gè)與指針相同類型的空間绢涡,實(shí)際上是在內(nèi)存中的空白區(qū)域中開(kāi)辟了這么一個(gè)受保護(hù)的內(nèi)存空間,然后用指針來(lái)指向它遣疯,那么指針里的地址就 是這個(gè)受保護(hù)空間的地址了雄可,而不是不可預(yù)知的啦,然后我們就可以通過(guò)指針對(duì)這個(gè)空間進(jìn)行相應(yīng)的操作了另锋;如果我們把指針設(shè)為NULL滞项,我們?cè)陬^文件定義中的 #define NULL 0 可以知道,其實(shí)NULL就是表示0夭坪,那么我們讓指針=NULL文判,實(shí)際上就是讓指針=0,如此室梅,指針里的地址(機(jī)器數(shù))就被初始化為0了戏仓,而內(nèi)存中地址為0 的內(nèi)存空間……不用多說(shuō)也能想象吧,這個(gè)地址是特定的亡鼠,那么也就不是不可預(yù)知的在內(nèi)存中亂指一氣的野指針了赏殃。

還應(yīng)該注意的 是,free和delete只是把指針?biāo)傅膬?nèi)存給釋放掉间涵,但并沒(méi)有把指針本身干掉仁热。指針p被free以后其地址仍然不變(非NULL),只是該地址對(duì)應(yīng) 的內(nèi)存是垃圾勾哩,p成了“野指針”抗蠢。如果此時(shí)不把p設(shè)置為NULL,會(huì)讓人誤以為p是個(gè)合法的指針思劳。用free或delete釋放了內(nèi)存之后迅矛,就應(yīng)立即將指 針設(shè)置為NULL,防止產(chǎn)生“野指針”潜叛。內(nèi)存被釋放了秽褒,并不表示指針會(huì)消亡或者成了NULL指針。(而且威兜,指針消亡了销斟,也并不表示它所指的內(nèi)存會(huì)被自動(dòng)釋 放。)

最后椒舵,總結(jié)一下野指針的的成因吧:

1蚂踊、指針變量沒(méi)有被初始化。任何指針變量剛被創(chuàng)建時(shí)不會(huì)自動(dòng)成為NULL指針逮栅,它的默認(rèn)值是隨機(jī)的悴势,它會(huì)亂指一氣。

2措伐、指針p被free或者delete之后特纤,沒(méi)有置為NULL,讓人誤以為p是個(gè)合法的指針侥加。

3捧存、指針操作超越了變量的作用范圍。這種情況讓人防不勝防担败。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末昔穴,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子提前,更是在濱河造成了極大的恐慌吗货,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件狈网,死亡現(xiàn)場(chǎng)離奇詭異宙搬,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)拓哺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門勇垛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人士鸥,你說(shuō)我怎么就攤上這事闲孤。” “怎么了烤礁?”我有些...
    開(kāi)封第一講書人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵讼积,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我鸽凶,道長(zhǎng)币砂,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任玻侥,我火速辦了婚禮决摧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘凑兰。我一直安慰自己掌桩,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布姑食。 她就那樣靜靜地躺著波岛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪音半。 梳的紋絲不亂的頭發(fā)上则拷,一...
    開(kāi)封第一講書人閱讀 49,046評(píng)論 1 285
  • 那天贡蓖,我揣著相機(jī)與錄音,去河邊找鬼煌茬。 笑死斥铺,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的坛善。 我是一名探鬼主播晾蜘,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼眠屎!你這毒婦竟也來(lái)了剔交?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤改衩,失蹤者是張志新(化名)和其女友劉穎岖常,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體燎字,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡腥椒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了候衍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片笼蛛。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蛉鹿,靈堂內(nèi)的尸體忽然破棺而出滨砍,到底是詐尸還是另有隱情,我是刑警寧澤妖异,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布惋戏,位于F島的核電站,受9級(jí)特大地震影響他膳,放射性物質(zhì)發(fā)生泄漏响逢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一棕孙、第九天 我趴在偏房一處隱蔽的房頂上張望舔亭。 院中可真熱鬧,春花似錦蟀俊、人聲如沸钦铺。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)矛洞。三九已至,卻和暖如春烫映,著一層夾襖步出監(jiān)牢的瞬間沼本,已是汗流浹背噩峦。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留抽兆,地道東北人壕探。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像郊丛,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子瞧筛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

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

  • 一厉熟、 莫名的恐懼感對(duì)于指針確實(shí)有種莫名的恐懼感,從剛開(kāi)始學(xué)習(xí)的時(shí)候就被老師灌輸?shù)母拍钍侵羔樄δ芎軓?qiáng)大较幌,但是用得不夠...
    杰米閱讀 700評(píng)論 0 1
  • 內(nèi)存泄漏 用動(dòng)態(tài)存儲(chǔ)分配函數(shù)動(dòng)態(tài)開(kāi)辟的空間揍瑟,在使用完畢后未釋放,結(jié)果導(dǎo)致一直占據(jù)該內(nèi)存單元乍炉,不能被任何程序再次使用...
    Pitfalls閱讀 1,293評(píng)論 0 0
  • 野指針指向一個(gè)已刪除的對(duì)象或未申請(qǐng)?jiān)L問(wèn)受限內(nèi)存區(qū)域的指針绢片。與空指針不同,野指針無(wú)法通過(guò)簡(jiǎn)單地判斷是否為NULL避免...
    踩在浪花上00閱讀 475評(píng)論 0 1
  • 原文地址 野指針 當(dāng)所指向的對(duì)象被釋放或者收回岛琼,但是對(duì)該指針沒(méi)有作任何的修改底循,以至于該指針仍舊指向已經(jīng)回收的內(nèi)存地...
    sindri的小巢閱讀 10,238評(píng)論 22 83
  • 情況一 原因指針變量聲明時(shí)沒(méi)有被初始化。 解決辦法指針聲明時(shí)初始化槐瑞,可以是具體的地址值熙涤,也可讓它指向NULL。 情...
    anny_4243閱讀 1,776評(píng)論 0 0