[英]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.