我遇到了与 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;
.

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top