不能把一个元素的指针在一个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

回到顶部