日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

野指针理解和处理

發布時間:2024/4/18 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 野指针理解和处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
指針是個很強大的工具,可是正因為它太強大,所以要操作它不是件易事。操作不當造成的野指針,甚至會引起系統死機等比較嚴重的后果。

   如果程序定義了一個指針,就必須要立即讓它指向一個我們設定的空間或者把它設為NULL,如果沒有這么做,那么這個指針里的內容是不可預知的,即不知道 它指向內存中的哪個空間(即野指針),它有可能指向的是一個空白的內存區域,可能指向的是已經受保護的區域,甚至可能指向系統的關鍵內存,如果是那樣就糟 了,也許我們后面不小心對指針進行操作就有可能讓系統出現紊亂,死機了。所以我們必須設定一個空間讓指針指向它,或者把指針設為NULL,這是怎么樣的一 個原理呢,如果是建立一個與指針相同類型的空間,實際上是在內存中的空白區域中開辟了這么一個受保護的內存空間,然后用指針來指向它,那么指針里的地址就 是這個受保護空間的地址了,而不是不可預知的啦,然后我們就可以通過指針對這個空間進行相應的操作了;如果我們把指針設為NULL,我們在頭文件定義中的 #define NULL 0 可以知道,其實NULL就是表示0,那么我們讓指針=NULL,實際上就是讓指針=0,如此,指針里的地址(機器數)就被初始化為0了,而內存中地址為0 的內存空間……不用多說也能想象吧,這個地址是特定的,那么也就不是不可預知的在內存中亂指一氣的野指針了。

  還應該注意的 是,free和delete只是把指針所指的內存給釋放掉,但并沒有把指針本身干掉。指針p被free以后其地址仍然不變(非NULL),只是該地址對應 的內存是垃圾,p成了“野指針”。如果此時不把p設置為NULL,會讓人誤以為p是個合法的指針。用free或delete釋放了內存之后,就應立即將指 針設置為NULL,防止產生“野指針”。內存被釋放了,并不表示指針會消亡或者成了NULL指針。(而且,指針消亡了,也并不表示它所指的內存會被自動釋 放。)

  最后,總結一下野指針的的成因吧:?
1、指針變量沒有被初始化。任何指針變量剛被創建時不會自動成為NULL指針,它的默認值是隨機的,它會亂指一氣。 ?
2、指針p被free或者delete之后,沒有置為NULL,讓人誤以為p是個合法的指針。
3、
指針操作超越了變量的作用范圍。這種情況讓人防不勝防。

總結

以上是生活随笔為你收集整理的野指针理解和处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。