簡體   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