造成野指针可能的原因可能有:
1.没有初始化
指针变量定义时没有默认被初始化为NULL,是随机的,所以指针变量中初始化时要么设置成NULL,要么指定确定的地址。
char *p = NULL
char *p = (char *)malloc(10);
2.被free或者delete后面有设置成NULL
char *p = malloc(10);
strcpy(p, "abc");
......
free(p);
if(p != NULL)
{
strcpy(p, "123");
}
其实在free后,p的指向没有被修改,但是指向的内存单元被释放,因此就变成野指针了。所以在free或者delete后加 =NULL语句。