Наш код включает структуру POD (Plain Old Datastructure) (это базовая структура C ++, в которой есть другие структуры и переменные POD, которые необходимо инициализировать вначале).
Судя по тому, что я читал , кажется, что:
myStruct = (MyStruct*)calloc(1, sizeof(MyStruct));
должен инициализировать все значения до нуля, как это делает:
myStruct = new MyStruct();
Однако, когда структура инициализируется вторым способом, Valgrind позже жалуется, что "условный переход или перемещение зависят от неинициализированного значения (значений)" при использовании этих переменных. Мое понимание здесь ошибочно, или Valgrind выдает ложные срабатывания?
new MyStruct()
не требуется устанавливать какие-либо байты заполнения в C ++ 03. В C ++ 0x это так. Любые биты заполнения будут установлены в 0 в C ++ 0x.