我的std :: vector
有问题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仍然指向同一个地方,但带有一些垃圾内存。
这是怎么回事?
答案 0 :(得分:0)
在向量中添加a2时,向量必须调整大小。这意味着分配新内存并将旧向量复制到这个新(更大)内存中。然后释放旧存储器。你的指针悬挂在这个(旧的)解除分配的内存中。
如果构造带有大小的向量,即std :: vector V(2),则向量获胜; t必须调整大小,指针将始终指向a1的值。