C语言野指针的问题
野指針的問(wèn)題
- 野指針的問(wèn)題
- 野指針概念
- 如何避免野指針
- NULL到底是什么
野指針的問(wèn)題
野指針概念
、野指針就是指針指向的位置是不可知的(隨機(jī)的,不正確的,沒(méi)有明確限制的)
野指針很可能觸發(fā)運(yùn)行時(shí)段錯(cuò)誤(sgmentation fault)。
因?yàn)橹羔樧兞吭诙x時(shí)如果未初始化,值也是隨機(jī)的。指針變量的值其實(shí)就是別的變量的地址,所以意味著這個(gè)指針指向了一個(gè)地址是不確定的變量,這時(shí)候去解引用就是去訪問(wèn)這個(gè)地址不確定的變量,所以結(jié)果是不可知的。
如何避免野指針
野指針的錯(cuò)誤來(lái)源就是指針定義了以后沒(méi)有初始化,也沒(méi)有賦值,沒(méi)有明確指向一個(gè)可用的內(nèi)存空間,然后就去解引用了。
避免野指針的方法:在指針的解引用之前,一定確保指針指向一個(gè)絕對(duì)可用的空間。
常規(guī)的做法是:
1.定義指針時(shí),同時(shí)初始化為NULL.
2.在指針解引用之前,先去判斷這個(gè)指針是不是NULL。
3.在指針使用完之后,將其賦值為NULL。
4.在指針使用之前,將其賦值綁定一個(gè)可用地址你空間。
這四點(diǎn)防止野指針的方案絕對(duì)可行,在實(shí)踐中在中小型的程序中,自己的水平可以把握的時(shí)候,可以不必嚴(yán)格按照這個(gè)標(biāo)準(zhǔn),但是在大型程序中,
總結(jié)
- 上一篇: 传祺gs8仪表盘出现m1s是什么意思
- 下一篇: C语言用位运算构建特定的二进制数