不能把一个元素的指针在一个std向量
我有性病问题:: vector的不能把一个元素的指针在一个std向量
class myType {
int i;
};
int main()
{
myType a1;
myType a2;
std::vector<myType> V;
V.push_back(a1);
myType* a1ptr = &V.back();
V.push_back(a2);
}
这一切工作正常之前,我添加A2,在PTR被点到一些有意义的记忆。 但一旦我添加了a2,ptr仍然指向相同的地方,但有一些垃圾内存。
这是怎么回事?
回答:
当您向矢量中添加a2时,矢量必须调整大小。这意味着分配新的内存并将旧的矢量复制到这个新的(较大的)内存中。旧的内存然后被释放。你的指针悬在这个(旧)释放的内存中。
如果您构建具有大小的向量,即std :: vector V(2),则向量不得不调整大小,并且指针将保持指向a1的值。
以上是 不能把一个元素的指针在一个std向量 的全部内容, 来源链接: utcz.com/qa/266176.html