【C语言进阶深度学习记录】三十七 C/C++中造成程序内存错误的原因(野指针)
生活随笔
收集整理的這篇文章主要介紹了
【C语言进阶深度学习记录】三十七 C/C++中造成程序内存错误的原因(野指针)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
什么是野指針? 指針變量存的地址是一塊非法內存地址。進而形成野指針。但是需要注意一點,野指針不是NULL指針。
文章目錄
- 1 野指針的概念
- 1.1 野指針代碼案例初探
- 2 如何避免野指針
- 2.1 野指針代碼案例分析進階
- 3 總結
1 野指針的概念
- 野指針變量中的值是非法內存地址,進而形成野指針
- 野指針不是NULL指針,是指向不可用內存的地址的指針
- NULL指針并無危害,很好判斷,也很好調試
- C語言的語言層面無法判斷一個指針所保存的地址是否是合法的。
那么野指針是如何產生的呢?
以下在代碼中的編程不規范會導致野指針的產生:
1.1 野指針代碼案例初探
- 代碼41-1.c
- 使用gcc4.4.5編譯器編譯上述代碼:上述代碼編譯沒有問題,運行會出現段錯誤。如果使用較新版本的編譯器,可能編譯都會直接報錯。
- 分析錯誤原因:
段錯誤一般就是野指針問題:
2 如何避免野指針
遵循以下幾條規則,避免野指針的產生
2.1 野指針代碼案例分析進階
- 代碼41-2.c
- 上述代碼編譯就會產生警告。警告第15行返回局部指針。程序運行產生段錯誤
- 其他的會產生野指針的地方在代碼中已經詳細的說明。自己分析即可。
3 總結
- 知道野指針的由來以及如何避免產生野指針。這是非常重要的!!!
總結
以上是生活随笔為你收集整理的【C语言进阶深度学习记录】三十七 C/C++中造成程序内存错误的原因(野指针)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html中单选框颜色怎么改,如何更改单选
- 下一篇: 【C++深度剖析教程35】函数模板的概念