Чтение 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;

Я предполагаю, что у ваших структур есть область блока (не файл). Если у них есть область файла, инициализация нуля неявна.

Другие вопросы по тегам