【发布时间】:2013-10-26 16:14:39
【问题描述】:
我的 Visual C++ 2010 代码中有这样的内容:
struct Foo
{
Foo( int arg1, int arg2..)
{
var1=arg1;
var2=arg2;
...
};
int var1;
int var2;
...
};
struct Bar
{
Bar(){};
vector<Foo*> foos
}
vector<Bar> bars;
我正在遍历 bar,然后遍历 bar[].foos,然后对 Foo 成员做一些事情。问题是有时我会以错误的顺序获取 var1、var2... 的值。
这只发生在发布配置中;如果 Foo 构造函数如下所示,这也不会发生:
富 (arg1...):var1(arg1)...
我想了解发生了什么以及为什么。
【问题讨论】:
-
您是说
var1和var2得到不正确 值,还是说这些值是正确的但以意外的顺序设置? -
值是正确的,如果我直接查询它们,它们的顺序似乎也正确。只有当我通过指针获取这些值时才会发生这种情况。
-
很可能你在某些指针运算中犯了错误。如果您怀疑存在编译器错误,则需要提出一个简短的独立重现来演示该问题。用几行伪代码是不可能诊断出这类问题的。
标签: visual-c++ compiler-optimization