野指针是指没有进行初始化的、一种不正常的指针,空指针被NULL初始化,是一种正常的指针。
#include <stdio.>
int *p1;//全局对象默认初始化,所以p1是空指针
int main()
{
int *p2;//野指针
}
野指针成因有三种:一、指针变量没有被初始化 ( 如上程序所示 );二、指针p被free或者delete之后,没有置为NULL; 三、指针操作超越了变量的作用范围,如函数返回指向该函数局部数据的指针。综合以上三条,所谓的野指针是指指向不可用内存的指针。
空指针是一种合法的指针,每种语言对空指针的赋值是不同的,对于C语言来说,只要赋值成NULL即可。空指针不指向任何数据,任何函数,所以系统中的任何数据任何函数的地址都不会是0。
进一步了解空指针可以参考:http://blog.sina.com.cn/s/blog_52e214770101gcye.html