C++ 空指针、野指针

空指针

一个被赋值为0的指针,它不指向任何的对象或者函数。注意:指向内存编号为0的空间是空指针,当初始化指针变量,如果刚开始不知道指向那 就给他初始化指向0编号,但是空指针指向的内存是不可以访问(0到255之间是系统占用的内存用户不可以访问)。

空指针定义

int *p=nullptr;//C++
int *p=NULL;//C

用户对空指针进行操作时会引发异常,因此对指针进行操作时,要对指针进行非空判断

if(p==nullptr){
    return ;//指针为空时,直接返回,避免程序崩
}
*p=...;

野指针

野指针指向一段实际的内存,但不知道它的实际指向,或者是它所指向的内存空间已经被释放,在实际使用的过程中,无法有效的识别一个指针是否为野指针。需要自己在编程过程中规范编程,避免野指针的产生。

1.指针未被初始化

int *p;
*p=1;//操作指针指向内存之前,指针未指向合法空间❌

2.指向堆内存被释放

int *p=new int(1);
delete p;
//堆上开辟空间被释放,p成为野指针

3.指针指向局部变量,操作超出作用域

int *p=nullptr;
{
    int a=0;
    p=&a;
}
//此时超出局部变量a的作用域,变量a将释放,指针p成为野指针

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值