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