繁体   English   中英

包含数据向量的类的向量的内存布局

[英]Memory layout of a vector of classes containing a vector of data

给出以下简化代码:

class A
{
public:   
    std::vector<int> v;
    int i;
}

int main()
{
   std::vector<A> v;
   v.push_back(A());
   v.push_back(A());
   v.push_back(A());
   v.push_back(A());
   v.push_back(A());
   v.push_back(A());
   v.push_back(A());
   v[5].v.push_back(15);
}

相对于其其他成员存储的成员向量在哪里。 将某些内容推回成员向量是否会导致类的向量重新排列? 还是向量的内存存储在其他地方,并且该类仅包含对其的引用? (我猜这个答案)

vector的内存存储在其他位置。 vector添加和删​​除元素不会影响Asizeof或结构。

在编写时, std向量的头已分配在堆栈上

std::vector<A> v;

但是在为元素分配内存时使用免费存储(即堆内存)。 因此,它对A的大小没有影响。

在谈论类的向量成员时,其头分配在分配类对象的位置(在上述情况下位于免费存储中)。 其余的成立。

暂无
暂无

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

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