作者:Steven | 来源:互联网 | 2024-10-29 09:56
在C语言编程中,指针一直是许多开发者感到棘手的部分。本文将深入探讨野指针的概念,帮助读者理解其本质及其潜在的危害,从而在编写代码时避免可能引发的重大错误。通过详细解析野指针的成因和影响,本文旨在提升开发者的指针使用技能,确保程序的稳定性和安全性。
1:什么是野指针
在C语言中不少人都是被指针这一块给难倒了,今天我们就来讲讲什么是指针里面的野指针,避免今后在书写代码的时候出现致命的错误。
2:容易造成野指针的几处
一:当我们创建一个指针变量的时候,如果不给他附一个初值,那么它里面放的便是一个随机值,假想一下。如果我们后续用到这个指针,需要把一个值放进去,那它就是随便找的一个地址把值放进去的,这种写法是非常有问题的。
二:当我们书写一个这样的代码的时候
arr里面只有10个空间的大小,当我们一直给p++那么他就会一直直线后面一个值,当p超过arr的范围的时候就造成了数组越界,越界后面的值也就是一个随机值,也会造成我们的野指针。
三:指针指向内存空间释放了
我们知道大括号代表一个生命周期,在一个大括号内执行完之后的所占用的空间会被栈释放我们拿一个例子来说明。
我们首先说建立一个函数,这个函数里面定一个变量a赋值10,再把a的地址(设0x0013bb44)传回来传给p,当然这是没有问题的。那么我们此时又通过这个指针变量p来把20赋到这个地址里面,那么此时这个代码就是有问题的。当return &a执行完后会返回一个地址给p用来保存,但是此时保存已经晚了,a的地址已经被释放了。此时如果又通过指针p来找回去找到地址0x0013bb44,那么此时的地址已经被得到了释放,是不属于我们的。
3:如何避免野指针
一:指针初始化
二:小心指针越界
三:指针指向空间释放即使放置NULL
四:指针使用之前检查有效性