目录
1.野指针的概念:指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)。
2.野指针的成因
(1)指针未初始化
int main()
{
int* p;//局部变量指针未初始化,默认为随机值
*p = 20;
return 0;
}
(2)指针的越界访问:当指针指向的范围超出数组arr的范围时,p就是野指针
#include <stdio.h>
int main()
{
int arr[10] = {0};
int *p = arr;
int i = 0;
for(i=0; i<=11; i++)
{
*(p++) = i;
}
return 0;
}
(3)指针指向的空间释放
3.如何避免野指针
(1)指针初始化
(2)小心指针越界
(3)指针指向空间释放即使置NULL
(4)避免返回局部变量的地址
(5)指针使用之前检查有效性