C语言中的指针。初阶指针: 野指针

野指针是指向未知内存位置的指针,可能由于未初始化、越界访问或已释放内存导致。避免野指针的方法包括初始化指针为NULL、防止指针越界以及在释放内存后将指针设为NULL。在使用指针前进行有效性检查是保证程序安全的重要步骤。
摘要由CSDN通过智能技术生成

总结下来:

要么指针   指向有效的地址,要么就是空指针,但写出空指针之后需要解引用它时,要判断一下

1.野指针是什么?

野指针就是指向位置不可知的(随机的,不确定的,没有明确限制的)

2.野指针产生的原因       

原因:               指针访问了不属于自己的内存空间

非法访问内存: 指针访问了不属于自己的内存空间

(1)指针未初始化

内存空间要申请才能访问,而 未初始化的指针随机访问 便就是 非法访问内存了

(2)指针越界访问

有10个元素,但你却访问第11个元素的地址,这就是越界

你访问了不属于你的内存

(3)指针指向的空间释放

当你申请的内存空间用完后还给操作系统了,但是指针里面可能还是记得这个地址,但是指针指向的内存空间已经不是你的,所以就是野指针

场景1:

 变量a 是临时创建的,所以当运行自定义函数之后,局部变量a的生命周期便结束,内存空间也不在是a的,但 指针p 还是存的变量a的地址      -----    指针p就是野指针

3.如何避免野指针

(1)指针初始化            不知道就初始化NULL(但在使用NULL指针时需要判断一下)

当指针不知道初始化成谁时,就初始化为     NULL (头文件是 stdio.h)

NULL     转到定义:   

 把0强制转换为 void*  类型,  也就是NULL 被强制转换为地址了

不过还是0

(2)小心指针越界

(3)指针释放空间后及时初始化 为 NULL

(4)NULL 使用前要先用if语句判断一下              指针使用之前检查有效性

举反例:

应对:  用if语句判断一下

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值