Чтение Uninit Memory Purify (UMR) при заполнении класса / структуры - PullRequest
3 голосов
/ 21 июля 2010

Я испытываю довольно раздражающий побочный эффект заполнения классов / структур при Purify .Например,

struct something {
    int field1;
    char field2;
};

/* ... */

struct something smth, smth2;
smth.field1 = 1;
smth.field2 = 'A';

smth2 = smth;

Последняя строка, скорее всего, вызовет предупреждение UMR о том, что осуществляется доступ к 3 байтам инициализированной памяти.Это, очевидно, ложный положительный результат: в последних трех байтах структуры отсутствуют пользовательские данные, это просто заполнение.

Часто предупреждения очень очень быстро заполняют файлы журнала, затрудняя просмотр других, реальные проблемы.

Кто-нибудь знает какой-либо способ подавления ложных срабатываний?

1 Ответ

0 голосов
/ 21 июля 2010

У меня нет опыта работы с cleany, но, возможно, явная инициализация первой структуры удаляет это предупреждение:

struct something smth = {0};
struct something smth2;

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

...