C++ 空指针、野指针

 空指针

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

空指针定义

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

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

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

野指针

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

1.指针未被初始化

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

2.指向堆内存被释放

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

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

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

 


posted @   hik_老鬼  阅读(211)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示