什么是野指针

这里面的NULL指的是空指针 ,不指向任何单元,仅仅表示初始化 ;
4.4.1 野指针
野指针出现的现象 :
1. 定义了以后 ,没有给地址赋值 ;
2. 地址释放了以后 ,指针没有指NULL;
 
避免野指针 :
1.定义的时候 =NULL;使用前赋值;
2. 释放的时候 ;free(p);
                     p=NULL;
 3. assert(NULL !=p)------函数的入口处 ;
 
 在函数的入口处使用assert(NULL != p)对参数进行校验。或者用if(NULL != p)来校验。它会提醒我们有没有初始化指针,起到定位错误的功能。
assert是个宏,它后面括号里的条件若不满足,则程序终止运行并提示出错。
 
使用完指针后务必记得释放指针所指向的内存,否则不知道什么时候我们又改变了指针的值,使其变成了野指针!
这里就需要free(p)这个函数的帮忙了,它可以切断指针与指向内存的联系。但是需要注意的是free对于同一指针变量只能使用一次。不然会导致出错或者内存泄漏。
释放完内存后另指针的值变为NULL!
free(p);
p = NULL;


避免野指针的操作:
1.当设置指针指向,或者设为null
2.给指针指向的空间赋值,一定给指针分配空间;
3.检查是否分配成功
4.分配成功后,初始化;
5.使用时不越界;
6.使用后free
7.free后再次置null
 


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值