有一个变量标记'用于表示特定场景是真还是假:
char flag;
此变量是类的一部分,未初始化为任何值。
随后在以下代码段中使用:
if(a)
{
------
}
else if(flag)
{
-----
}
else if(b)
{
------
}
当使用MemCheck运行Valgrind时,没有条件跳转或移动取决于Valgrind抛出的未初始化值警告,即使 else if(flag)代码段被击中。
变量' b'也没有初始化,但Valgrind正确地发出警告。
对于为什么Valgrind会错过' flag' 变量的警告,是否有任何可能的解释?是否由于某种编译器优化?
先谢谢..