关于野指针

什么是野指针?

例如:

      int *p;    

     int *p = new int[1];

     int i = 3;

      p = &i;

      delete p;   

       

像上面的例子所示的,没有对p申请指定的访问内存区域(也就是说p指针的指向是随机的,指向的是内存空间的随机地址),或是p 指向一个已删除的对象,出现像这样的指针成为野指针。


野指针的危害:

                 就是在使用p的时候就没有办法通过该指针找到指定的区域对其进行操作,从而会引起整个程序的错误。

          

如何避免野指针?

        指针变量一定要初始化为NULL,因为任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的。例如:int *p = NULL;

      当指针p指向的内存空间释放时,没有设置指针p的值为NULL。delete和free只是把内存空间释放了,但是并没有将指针p的值赋为NULL。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值