我正在使用Valgrind来调试我的代码,当我struct通过比较来测试是否初始化时,我会收到警告NULL.
void main()
{
int *unassignedPointer;
if(unassignedPointer == NULL)
printf("This Pointer is NULL\n");
}
Run Code Online (Sandbox Code Playgroud)
此代码编译并运行,但是当通过Valgrind运行时,它会发出警告:条件跳转或移动取决于未初始化的值.与之比较的重点NULL是确定它是否已初始化.这是一种危险的做法,还是应该忽略这些警告?
你当然不应该忽略警告,你应该通过初始化指针来修复它:
int *pointer = NULL;
Run Code Online (Sandbox Code Playgroud)
一般情况下,您无法检测是否已分配变量,没有神奇的"无值"值,变量的所有位都用于包含实际值.