程序錯誤及故障分析(指針問題導致)

程序出現“段錯誤(segment fault)或者“非法操作”,該內存地址不能read/write的錯誤信息時

分析:典型的非法指針解引用造成的錯誤,當指針指向一個不允許讀或者寫的內存地址,而程序卻試圖利用指針來讀或者寫該地址的時候就會出現這個錯誤。在Linux或者Windows操作系統的內存佈局中,有些地址是不能讀寫的。如0地址,還有一些地址需先獲取地址讀寫權之後才能進行讀寫;某些地址需先請求將這些地址映射到實際的物理地址後才能進行讀寫該片內存

一般原因:*指針初始化爲NULL,之後卻沒有給它一個合理的值來進行後期使用

                    *初始化棧上的指針沒有初始化,指針的值一般爲隨機數,之後就之間開始使用指針。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

程序出現“燙”或者“”屯--

將未初始化數據設置爲0xCC的理由是這樣可以有助於判斷一個變量是否沒有初始化。如果一個指針變量的值是0XCCCCCCCC那麼我們就可以基本相信這個指針沒有經過初始化(僅供參考用)。有時編譯器還會使用0XCDCDCDCD作爲未初始化標記,此時出現的就是“屯屯”

發佈了18 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章