Nuestro código involucra una estructura POD (Plain Old Datastructure) (es una estructura c ++ básica que tiene otras estructuras y variables POD que deben inicializarse al principio).
Basado en lo que he leído , parece que:
myStruct = (MyStruct*)calloc(1, sizeof(MyStruct));
debería inicializar todos los valores a cero, al igual que:
myStruct = new MyStruct();
Sin embargo, cuando la estructura se inicializa de la segunda forma, Valgrind luego se queja de que "el salto o movimiento condicional depende de valores no inicializados" cuando se utilizan esas variables. ¿Mi comprensión es defectuosa aquí, o Valgrind arroja falsos positivos?
new MyStruct()
no fue necesario establecer bytes de relleno en C ++ 03. En C ++ 0x lo es. Los bits de relleno se establecerán en 0 en C ++ 0x.