0

我的 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 构造函数如下所示,这也不会发生: Foo (arg1...):var1(arg1)...
我想了解发生了什么以及为什么。

4

1 回答 1

0

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

于 2013-10-27T06:05:54.077 回答