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;
}
2 つの int または 2 つの bool、または 1 つの int または bool を使用しても問題はありません。さまざまなタイプのメンバーを持つクラスを持つと、Valgrind が不平を言うように見えます。これは、単純に私の明示的なチェック要求によるものではありません。dummyObject に似たオブジェクトが使用される大規模なプログラムでは、「条件付きのジャンプまたは移動は初期化されていない値に依存します」というエラーが発生します。
私のコンパイラは、64 ビット Linux 上の g++ 4.7.3 であり、デバッグ フラグを使用して最適化を行わずにコンパイルします。または、違いはありません。
見逃しているものはありますか、それとも誤検知ですか?