我使用Purify体验了类/结构填充的相当烦人的副作用。例如。

struct something {
    int field1;
    char field2;
};

/* ... */

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

smth2 = smth;

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

通常,警告会非常快地填满日志文件,从而很难看到其他实际问题。

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

最佳答案

我没有使用purify的经验,但也许明确初始化第一个结构会删除此警告:

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

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

10-06 01:27