Valgrind 一直在抱怨未初始化的字节,并通过精简寻找一个最小的例子,我最终得到了这个:
#include <valgrind/memcheck.h>
struct dummyObject{
int foo;
bool bar;
dummyObject():foo(1),bar(true) {}
};
int main(){
dummyObject dummy;
VALGRIND_CHECK_VALUE_IS_DEFINED(dummy);
return 0;
}
拥有两个 int 或两个 bool,或者一个 int 或 bool,不会引起任何抱怨。看起来好像有一个包含不同类型成员的类会导致 Valgrind 抱怨。这不仅仅是因为我明确要求检查。在使用类似于 dummyObject 的对象的较大程序中,我收到“条件跳转或移动取决于未初始化的值”错误。
我的编译器是 64 位 linux 上的 g++ 4.7.3,使用调试标志进行编译,没有优化 - 或者,它没有区别。
是我遗漏了什么,还是误报?