返回信息流struct A {
int a;
vector<int> va;
vector<int> vb;
//其它
};
请问这样的结构体内存是怎么对齐的?
当va或者vb由于空间不足导致重新分配空间怎么办?
这是一条镜像帖。来源:北邮人论坛 / cpp / #92254同步于 2016/6/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
关于内存对齐
fengyiqiao
2016/6/18镜像同步12 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 a206206 的大作中提到: 】
: vector变的是内容,又不是他自己。。
为啥不能是他自己,push_back的时候vector的大小可能会变啊
【 在 zbl807484514 的大作中提到: 】
: 结构体中使用容器存储的只是容器的地址。
: 实际存储空间不在结构体分配的内存中。
:
: ...................
原来如此,多谢
【 在 zbl807484514 的大作中提到: 】
: 我也是从别处看的,露珠可以写几行代码实验下。
: 发自「贵邮」
试验过了,sizeof(A)是常数,和容器内元素个数没关系,应该只和编译器以及容器内的数据类型有关。
【 在 nuanyangyang 的大作中提到: 】
: 要是我实现vector的话,里面的内容肯定分配在堆里,然后vector里面保存一个到实际内容的指针。这样vector本身大小不会变。
恩,看了源码,的确如此,成员变量只有几个指针,实际内容交给空间配置器分配了。