题
我遇到了与 purify 。例如。
struct something {
int field1;
char field2;
};
/* ... */
struct something smth, smth2;
smth.field1 = 1;
smth.field2 = 'A';
smth2 = smth;
.
最后一行很可能触发UMR警告,说访问了3个字节的初始化内存。这显然是假的:结构的最后三个字节中没有用户数据,它只是一个填充。
通常会非常快速地填满日志文件,使其很难看到另一个真正的问题。
任何人都知道任何抑制误报的方法吗?
解决方案
我没有净化经验,但也许明确初始化第一个结构删除此警告:
struct something smth = {0};
struct something smth2;
.
我假设你的结构有块范围(不是文件)。如果它们具有文件范围,则零初始化是隐式的。
不隶属于 StackOverflow