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