野指针 空指针

   

       野指针:不是NULL指针,是指向被释放的 或者访问受限的垃圾内存的指针。指针变量没有被初始化或者指针     p没被free或者delete之后没有被设置为NULL,让人误认为p是个合法的指针,此外指针操作超越了变量的作用范      围(比如不要返回指向栈内存的指针或引用,

   因为栈内存在函数结束时会被释放)时也会出现野指针,所以在使用指针时首先不要忘了重要的if语句:

if(NULL==*p)

{

return ;

}

防止野指针的方式有:

  1.当指针没有做初始化,也没有指向时,将指针指向NULL。int *p=NULL;初始化为NULL的目的是所指向0地址,是不允许操作不允许访问的。

       2.当想给指针赋值时检查是否分配了内存空间,若没有记得malloc分配。

       3.给指针分配内存后,不使用时再用free()函数清空(原来的缓冲区),并再将指针指向NULL。

void *为万能指针,可以接收任何类型的指针,但是不能对其取值(不能对他指向的空间进行操作,它只能暂时存放地址)。

        空指针:

       如果 p 是一个指针变量,则 p = 0; p = 0L; p = '\0'; p = 3 - 3; p = 0 * 17; 中的任何一种赋值操作之后(对于 C 来说还可以是 p = (void*)0;), p 都成为一个空指针,由系统保证空指针不指向任何实际的对象或者函数。反过来说,任何对象或者函数的地址都不可能是空指针。(比如这里的(void*)0就是一个空指针。把它理解为null pointer还是null pointer constant)。其实空指针只是一种编程概念,就如一个容器可能有空和非空两种基本状态。

     

         







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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值