交换成员值

时间:2013-10-26 16:14:39

标签: visual-c++ compiler-optimization

我的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;

我正在遍历酒吧,然后通过酒吧[]。foos,然后与Foo成员做一些事情。问题是,有时候我的var1,var2 ......值得错误 这只发生在Release配置中;如果Foo构造函数看起来像这样,也不会发生这种情况:     Foo(arg1 ...):var1(arg1)...
我想了解发生了什么以及为什么。

1 个答案:

答案 0 :(得分:0)

这确实是我的错误,也是愚蠢的 Bar.foos指向另一个向量中的Foo对象,我忘了保留空间。所以这个向量不时扩展,使我的旧指针无效。当然,Foo对象本身很好 - 它们只是在其他地方。