1
なぜvalgrindは次のコードの初期化されていないバイトについて報告しますか?空のクラスを使用しているとき、Valgrindが初期化されていないバイトを報告します
メンバ変数を追加してテストして初期化すると、出力はありません。
あなたの例ではなぜvalgrindは次のコードの初期化されていないバイトについて報告しますか?空のクラスを使用しているとき、Valgrindが初期化されていないバイトを報告します
メンバ変数を追加してテストして初期化すると、出力はありません。
あなたの例では、の大きさは、「」1のようになります
printf("%ld\n",sizeof(a)); => 1
sizeof()
は、クラス内のデータを報告しますが、それぞれのユニークなクラスが持っている必要がありますので、それが自分のアドレス、パディングバイトが追加されています。 valgrindは、パディングバイトにアクセスしているという理由でコンパイラは任意の値に初期化する必要はありません。
クラスの最小サイズが1で、0ではない理由についてのコメントは、hereを参照してください。