Наш код включает структуру 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. - person Johannes Schaub - litb   schedule 06.05.2011