概念:野指针也就是指向位置不可知的指针
产生原因:释放内存后,指针没有及时置空,仍然指向该内存
char *p = (char *)malloc(sizeof(char)*100);
strcpy(p, "Douya");
free(p);// p所指向的内存被释放,但是p所指的地址仍然不变
...
if (p != NULL){// 没有起到防错作用
strcpy(p, "hello, Douya!");// error
}
如何避免野指针的产生?
1.指针初始化的时候置空
char *p = NULL;
2.申请内存后,将其判断为空
3.指针释放后置空
示例代码如下:
int *p = NULL; //初始化置NULL
p = (int *)malloc(sizeof(int)*n); //申请n个int内存空间
assert(p != NULL); //判空,防错设计
//重新分配内存, p 所指向的内存块会被释放并分配一个新的内存地址
p = (int *) realloc(p, 25);
free(p);
p = NULL; //释放后置空