野指针是什么?以及野指针的危害

什么是野指针?

野指针:不正确,指向位置随机的指针
产生原因:
1、创建指针未赋值初始化,指向随机位置
2、释放指针指向的地址内存没有清空,指向垃圾内存
3、对指针的操作已经超出了指针变量的作用域

野指针的危害

我们知道野指针是指向一个不可知地址的指针,这里分为3种情况:
1、指向不可访问的地址
危害:触发段错误。(所谓段错误,就是访问了不能访问的内存。 比如内存不存在,或者受保护等等)
2、指向一个可用的,但是没有明确意义的空间
危害:程序可以正确运行,但通常这种情况下,我们就会认为我们的程序是正确的没有问题的,然而事实上就是有问题存在,所以这样就掩盖了我们程序上的错误。
3、指向一个可用的,而且正在被使用的空间
危害:如果我们对这样一个指针进行解引用,对其所指向的空间内容进行了修改,但是实际上这块空间正在被使用,那么这个时候变量的内容突然被改变,当然就会对程序的运行产生影响,因为我们所使用的变量已经不是我们所想要使用的那个值了。通常这样的程序都会崩溃,或者数据被损坏。

如何避免

既然我们现在已经知道了野指针产生的原因,如此,只要我们不犯这几种错误就可以很好的避免野指针的产生。
1、定义一个指针变量时一定记得初始化
2、动态开辟的内存空间使用完free之后一定将对应的指针置为NULL
3、不要在函数中返回栈空间的指针和引用
4、注意在使用时对指针的合法性的判断

猜你喜欢

转载自blog.csdn.net/weixin_44406127/article/details/129548559