我的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)...
我想了解发生了什么以及为什么。
答案 0 :(得分:0)
这确实是我的错误,也是愚蠢的 Bar.foos指向另一个向量中的Foo对象,我忘了保留空间。所以这个向量不时扩展,使我的旧指针无效。当然,Foo对象本身很好 - 它们只是在其他地方。