c++空指针和野指针

空指针:

  • 定义:是一个被赋值为NULL的指针,它不指向任何的对象或者函数。
  • 注意事项:
    1、使用指针的第一件事就是需要看这个指针是否是空指针(坚决不能使用空指针,否则程序就会崩。意思就是:为一个指针赋值为空指针不会报错,但是在我们想访问的时候会报错(系统不允许我们读取地址为0的数据)
    判断空指针的方法:if(p!=NULL){};//NULL是空指针的意思//若明确指针该指针有指向,则不需要做判断,若不知道,则要做判断

野指针:

野指针不同于空指针,空指针是指一个指针的值为NULL,而野指针的值并不为NULL,野指针会指向一段实际的内存,只是它指向哪里我们并不知情,或者是它所指向的内存空间已经被释放,所以在实际使用的过程中,我们并不能通过指针判空去识别一个指针是否为野指针。(野指针可能指向一个可用的,但是正在被使用的空间,如果对它进行操作是非常危险的,程序可能会崩溃,数据也会可能被破坏),避免野指针只能靠我们自己养成良好的编程习惯。

建议:

1、在声明指针的时候,就应该对其进行初始化,即让他指向NULL值

int *p = NULL;

2、使用指针前进行判断:

if (p == NULL)
{
	...
}
else
{
	....
}

3、释放指针后将其指向NULL
如果堆上的内存已经被释放,但是指向该内存的指针如果没有人为的修改过,那么指针还会继续指向这段堆上已经被释放的内存,这时还通过该指针去访问堆上的内存,就会造成不可预知的结果

int *p = new int();
...
delete p;
p = NULL;

4、动态申请操作必须和释放操作匹配,防止内存泄露和多次释放。谁申请,谁释放。
5、牢记数组的长度,防止数组越界操作,考虑使用柔性数组,使用结构体struct来定义柔性数组。


参考文章:
C/C++野指针
[C++]野指针及其危害

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值