我在 Blackfin 533 处理器上运行的一些代码中遇到了这个错误。
第一次Func()
运行时,fooStruct
将包含垃圾,但在下一次迭代中,getFoo()
偶然返回的旧值仍然在fooStruct.foo
.
FooStruct
{
double foo;
double bar;
};
void Func()
{
FooStruct fooStruct;
double bar = 123.4 / fooStruct.foo;
fooStruct.foo = getFoo();
fooStruct.bar = bar;
}
这意味着第一次运行时,我们正在读取一个未初始化的变量,这是未定义的行为。接下来的迭代呢?那仍然是未定义的行为吗?在嵌入式处理器上读取未初始化的变量时,我们可以期望看到什么样的行为?