野指针概念:指针指向的位置不可知(随机的、不正确的、没有明确限制的)
以下介绍几种野指针情况
①指针未初始化
#include <stdio.h>
int main()
{
int *p;//局部变量指针未初始化,默认为随机值
*p = 20;
return 0;
}
②指针越界访问
#include <stdio.h>
int main()
{
int arr[10] = {0}
int *p = &arr[0];
int i = 0;
for(i=0; i<=11; i++)
{
//当指针指向的范围超出数组arr的范围时,p就是野指针
*(p++) = i;
}
return 0;
③指针指向的空间释放
#include <stdio.h>
int* test()
{
int n = 100;
return &n;
}
int main()
{
int*p = test();
printf("%d\n", *p);
return 0;
}
出函数的时候变量n申请的空间会归还给操作系统
存在p中的地址没有指向的空间