3

我遇到了Purify的类/结构填充的非常烦人的副作用。例如

struct something {
    int field1;
    char field2;
};

/* ... */

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

smth2 = smth;

最后一行很可能会触发 UMR 警告,说访问了 3 个字节的初始化内存。这显然是一个误报:结构的最后三个字节中没有用户数据,它只是一个填充。

通常警告会很快填满日志文件,从而很难看到其他真正的问题。

有人知道抑制误报的方法吗?

4

1 回答 1

0

我没有净化的经验,但也许显式初始化第一个结构会删除这个警告:

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

我假设您的结构具有块范围(不是文件)。如果它们具有文件范围,则零初始化是隐式的。

于 2010-07-21T11:49:31.840 回答