繁体   English   中英

无法获取标准向量中元素的指针

[英]cant take pointer of an element in a std vector

我对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仍然指向同一位置,但有一些垃圾内存。

这是怎么回事?

将a2添加到向量中时,向量必须调整大小。 这意味着将分配新的内存,并将旧的向量复制到该新的(较大的)内存中。 然后将旧内存释放。 您的指针悬空到这个(旧的)已释放的内存中。

如果构造一个具有大小的向量,即std :: vector V(2),则向量将不必调整大小,并且指针将始终指向a1的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM