Чтение Uninit Memory Purify (UMR) при заполнении класса / структуры
Я испытываю довольно раздражающий побочный эффект заполнения классов / структур с помощью Purify. Например
struct something {
int field1;
char field2;
};
/* ... */
struct something smth, smth2;
smth.field1 = 1;
smth.field2 = 'A';
smth2 = smth;
Последняя строка, скорее всего, вызовет предупреждение UMR о том, что 3 байта инициализированной памяти доступны. Это, очевидно, ложное срабатывание: в последних трех байтах структуры нет пользовательских данных, это просто дополнение.
Часто предупреждения очень очень быстро заполняют файлы журналов, что делает очень трудно увидеть другие, реальные проблемы.
Кто-нибудь знает способ подавления ложных срабатываний?
1 ответ
У меня нет опыта по очистке, но, возможно, при явной инициализации первой структуры это предупреждение удаляется:
struct something smth = {0};
struct something smth2;
Я предполагаю, что у ваших структур есть область блока (не файл). Если у них есть область файла, инициализация нуля неявна.