假设我有以下内容:
struct Foo {
Foo () : bar(NULL), box(true) {}
Bar* bar;
bool box;
};
我声明如下:
std::vector<Foo> vec(3);
我现在有一个函数可以执行以下操作:
Foo& giveFoo() { //finds a certain foo and does return vec[i]; }
Foo
然后调用者将它通过引用获得的地址传递Foo*
给其他人。但是,我想知道的是,Foo
在触发向量增长后,这个指向的指针是否仍然有效vec
?如果复制其中的现有Foo
元素,vec
那么大概Foo*
漂浮的元素现在将悬空?是不是这样?我正在调试应用程序,但无法重现。