首先举一个例子来说明什么是野指针
int main()
{
int *p;
scanf("%d",p);
printf("%d\n",*p);
return 0;
}
我们发现运行这段程序是会出现段错误,这是为什么呢?
因为指针p是一个野指针。
为什么说指针p是野指针呢?
“野指针”不是NULL指针,是指向“垃圾”内存的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是“野指针”是很危险的,if语句对它不起作用。
上面程序中我们没有给p初始化,任何指针变量刚被创建时不会自动成为NULL指针,系统就会随机的给他一个初始值,而p指向的这个内存空间并没有申请,因此p就成为了野指针。
野指针的危害:会产生内存泄漏
原因:(1)指向一块已经释放的内存
(2)指向一块没有访问权限的内存