小编典典

释放后将变量设置为NULL

all

在我的公司有一条编码规则,即在释放任何内存后,将变量重置为NULL. 例如 …

void some_func () 
{
    int *nPtr;

    nPtr = malloc (100);

    free (nPtr);
    nPtr = NULL;

    return;
}

我觉得,在上面显示的代码这样的情况下,设置为NULL没有任何意义。还是我错过了什么?

如果在这种情况下没有任何意义,我将与“质量团队”一起将这个编码规则删除。请指教。


阅读 61

收藏
2022-08-03

共1个答案

小编典典

将未使用的指针设置为 NULL
是一种防御方式,可防止出现悬空指针错误。如果悬空指针在被释放后被访问,您可能会读取或覆盖随机内存。如果访问空指针,大多数系统会立即崩溃,并立即告诉您错误是什么。

对于局部变量,如果指针在被释放后不再被访问是“明显的”,这可能有点无意义,所以这种风格更适合成员数据和全局变量。即使对于局部变量,如果函数在内存释放后继续执行,这可能是一个好方法。

要完成样式,您还应该在为指针分配真正的指针值之前将指针初始化为 NULL。

2022-08-03