Valgrind将指针与NULL进行比较

Ton*_*uth 1 c valgrind

我正在使用Valgrind来调试我的代码,当我struct通过比较来测试是否初始化时,我会收到警告NULL.

void main()
{
    int *unassignedPointer;
    if(unassignedPointer == NULL)
        printf("This Pointer is NULL\n");
}
Run Code Online (Sandbox Code Playgroud)

此代码编译并运行,但是当通过Valgrind运行时,它会发出警告:条件跳转或移动取决于未初始化的值.与之比较的重点NULL是确定它是否已初始化.这是一种危险的做法,还是应该忽略这些警告?

unw*_*ind 5

你当然不应该忽略警告,你应该通过初始化指针来修复它:

int *pointer = NULL;
Run Code Online (Sandbox Code Playgroud)

一般情况下,您无法检测是否已分配变量,没有神奇的"无值"值,变量的所有位都用于包含实际值.

  • 不清楚"变量的所有位用于包含实际值",因为我不认为指针不包含填充.IAC,最后一句话看起来没必要. (2认同)