ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

C语言指针——野指针

2026/8/28 16:34:54 拓冰建站 浏览量
C语言指针——野指针

目录

概念

原因

1、指针未初始化

2、指针越界访问

3、指针指向的空间释放

如何规避野指针

1、指针初始化

(1)、不知道指针初始化什么地址时,直接初始化为NULL

(2)、明确知道初始化的值

2、小心指针越界

3、指针指向空间释放即时置NULL

4、指针使用之前检查有效性


概念

指针指向的位置是不可知的(随机的、不确定的、没有明确限制的)

原因


1、指针未初始化

#include<stdio.h>
int main()
{int* p;     //局部变量指针未初始化,默认为随机值*p=20;return 0;
}


2、指针越界访问

#inlcude<stdio.h>
int main()
{int arr[10]={0};int *p=arr;int i=0;for(i=0;i<=11;i++){//当指针指向的范围超出数组arr的范围时,p就是野指针*(p++)=i;    }return 0;
}


3、指针指向的空间释放

#include<stdio.h>
int* test()
{int a=10;return &a;    
}
int main()
{int*p=test();*p=20;return 0;
}

如何规避野指针

1、指针初始化


(1)、不知道指针初始化什么地址时,直接初始化为NULL

#include<stdio.h>
int main()
{int* p=NULL;return 0;
}


(2)、明确知道初始化的值

#include<stdio.h>
int main()
{int a=10;int* p=&a;return 0;
}


2、小心指针越界

C语言本身是不会检查数组越界行为的

3、指针指向空间释放即时置NULL

4、指针使用之前检查有效性

#include<stdio.h>
int main()
{int* p=NULL;if(p!=NULL)//判断是否为空指针,检测是否有效*p=10;return 0;
}