我使用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;
我假设您的结构具有块作用域(不是文件)。如果它们具有文件作用域,则零初始化是隐式的。