什么是野指针?
例如:
int *p;
或
int *p = new int[1];
int i = 3;
p = &i;
delete p;
像上面的例子所示的,没有对p申请指定的访问内存区域(也就是说p指针的指向是随机的,指向的是内存空间的随机地址),或是p 指向一个已删除的对象,出现像这样的指针成为野指针。
野指针的危害:
就是在使用p的时候就没有办法通过该指针找到指定的区域对其进行操作,从而会引起整个程序的错误。
如何避免野指针?
指针变量一定要初始化为NULL,因为任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的。例如:int *p = NULL;
当指针p指向的内存空间释放时,没有设置指针p的值为NULL。delete和free只是把内存空间释放了,但是并没有将指针p的值赋为NULL。