野指针
当一个指针指向的位置是不可知的,随机的,不正确的或者没有明确限制的时候,就叫这个指针为野指针。
野指针常见的产生情况:
int* p;
*p=10;
指针p没有初始化,没有指向。存放的是随机值0xcccccccc
-
指针越界访问
int arr[10]={0};
int*p arr;
for(int i=0;i<=10:i++)
{
*p=i;
p++;
}//非法访问内存了
-
使用的指针已经被释放
int test()
{
int a=10;
return 0;
}
int main()
{
int* p=test();
}
p中存放的是函数中的局部变量的内存,在函数执行完之后销毁了,指针被释放。
一定程度上避免野指针出现的办法
1,明确初始化
2,指针名指明变量
3,暂时不知道指向谁,就赋值空指针NULL,但在下一次初始化之前不能再使用
为了避免使用空指针可以i
if(p !=NULL)
{
//操作
}
只用之前检查有效性