概念:野指针也就是指向位置不可知的指针
产生原因:释放内存后,指针没有及时置空,仍然指向该内存
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; //释放后置空
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)