在我的公司有一条编码规则,即在释放任何内存后,将变量重置为NULL. 例如 …
NULL
void some_func () { int *nPtr; nPtr = malloc (100); free (nPtr); nPtr = NULL; return; }
我觉得,在上面显示的代码这样的情况下,设置为NULL没有任何意义。还是我错过了什么?
如果在这种情况下没有任何意义,我将与“质量团队”一起将这个编码规则删除。请指教。
将未使用的指针设置为 NULL 是一种防御方式,可防止出现悬空指针错误。如果悬空指针在被释放后被访问,您可能会读取或覆盖随机内存。如果访问空指针,大多数系统会立即崩溃,并立即告诉您错误是什么。
对于局部变量,如果指针在被释放后不再被访问是“明显的”,这可能有点无意义,所以这种风格更适合成员数据和全局变量。即使对于局部变量,如果函数在内存释放后继续执行,这可能是一个好方法。
要完成样式,您还应该在为指针分配真正的指针值之前将指针初始化为 NULL。