大致内容
1 野指针定义
- 野指针就是指针指向的位置是不可知的,随机的.....
2 野指针成因
指针未初始化
指针进行了越界操作
指针指向空间被释放
3 如何规避野指针
1. 指针初始化
2. 小心指针越界
3. 指针指向空间释放即改为NULL
4. 指针使用之前检查有效性
详细内容
2 野指针成因
1指针未初始化
int a=0; int *pa; *pa=10; 此处的*p并未指向一块空间,从而形成了野指针 缺少*p =&a;
2指针进行了越界操作
int arr[2]; int*p;
*p=arr;
for(int i=0;i<3;i++)
{ *p=arr[0]; p++;}
此时arr数组中只有两个字节 而for循环却可以使*p指向arr数组外的内存地址;这种情况叫做越界操作;从而形成野指针
3 指针指向空间被释放
int*test(){
int a=10;
return &a;}
int main(){
int *p=test():
printf("%d\n",p);
return 0}
在这段代码中运用了自定义函数;函数中变量a是临时变量;只在调用函数时才在内存中生成空间,因此我们可以知道当test将a的地址返回给*p时,也就是函数调用完成时,内存中存储a的空间被释放也就是重置地址也就消失,这种指针也叫野指针
3 如何规避野指针
********最重要的时指针的初始化
当你不知道指针要指向什么东西时可以指向空指针NULL
int *p; *p =NULL(*(void*)0)强制把0转化为void0的指针
1. 指针初始化
2. 小心指针越界
3. 指针指向空间释放即改为NULL
4. 指针使用之前检查有效性