Unser Code enthält eine POD-Struktur (Plain Old Datastructure) (es ist eine grundlegende c ++ - Struktur, die andere Strukturen und POD-Variablen enthält, die zu Beginn initialisiert werden müssen.)
Basierend auf einem, was ich gelesen habe , scheint es, dass:
myStruct = (MyStruct*)calloc(1, sizeof(MyStruct));
sollte alle Werte auf Null initialisieren, ebenso wie:
myStruct = new MyStruct();
Wenn die Struktur jedoch auf die zweite Weise initialisiert wird, beschwert sich Valgrind später, dass "bedingte Sprünge oder Bewegungen von nicht initialisierten Werten abhängen", wenn diese Variablen verwendet werden. Ist mein Verständnis hier fehlerhaft oder wirft Valgrind falsch positive Ergebnisse?
new MyStruct()
in C ++ 03 keine Auffüllbytes festgelegt werden mussten. In C ++ 0x ist es. Alle Füllbits werden in C ++ 0x auf 0 gesetzt.