野指针
野指针的概念:
“野指针”不是NULL指针,是未初始化或未清零的指针,他指向的内存地址不是程序员想要的。人们一般不会错用NULL指针,因为用if语句很容易判断。但是“野指针”是很危险的,if语句对它不起作用。野指针的成因主要有两种:
形成野指针的原因:
1.指针创建后没有初始化
解决方法是初始化为NULL或者指向合法内存。
2.指针在使用free()和delete()函数释放指向的内存时,但没有释放指针
当程序再一次调用该指针后,该野指针会乱指地址。但有些内存时受保护并且不可读写的,严重时会导致程序崩溃。解决方法是释放内存后,也将指针设为NULL;
3.指针创建和操作不再同一个作用域中
防止野指针代码:
定义整型指针a,动态申请内存b[2],整型变量aa,指针a指向内存aa,之后输出a和b的地址和指向内存值。
代码:
1 #include<iostream>
2 using namespace std;
3 main()
4 {
5 int *a;
6 int *b=new int[2];//申请内存
7 int aa=10;
8 a=&aa;
9 *b=2;
10 cout<<a<<" "<<*a<<endl;
11 cout<<b<<" "<<*b<<endl;
12 delete[] b;//释放内存
13 if(b != NULL)
14 b=NULL;//释放指针
15 }