库函数开释指针后为啥不置NULL
库函数释放指针后为啥不置NULL ?比如free(p)为啥库函数不用:free(&p)在free()里最后加一句:*p NULL这
库函数释放指针后为啥不置NULL ?
比如
free(p);
为啥库函数不用:
free(&p);
在free()里最后加一句:
*p = NULL;
这样不就可以避免很多野指针了吗?
[解决办法]
A* p = malloc(...);
A* p1 = p;
free(&p);
//此时p=NULL,p1!=NULL
所以我觉得不能避免野指针。
[解决办法]为了可读性+效率;
LZ自己达到这样的效果也可适配一下,比如
#define SAFE_FREE(p) if(p){free(p);p = null;}