【发布时间】:2020-11-17 03:11:03
【问题描述】:
如果我有这样的课程:
class foo
{
std::vector<int> bar;
int a;
};
int a 的偏移量会在整个运行时保持不变吗?我的理解是 std::vector<int> bar 可以调整大小,并且向量具有它们包含在连续内存中的项目。如果是这种情况,那么如果bar 在运行时调整大小,那不会改变a 的偏移量吗?
【问题讨论】:
-
@fas 该链接实际上与 OP 的问题无关,他们在询问更改矢量成员的大小是否会影响布局。
-
vectorobject 的大小不会改变无论向量中有多少(如果有)项目。向量在内部维护的动态序列当然可以改变内存占用,但是向量对象本身作为一个对象将是大小恒定的,因此(a)foo的任何实例和(b)成员a的偏移量。 -
@cigien 这有点像 OP 所要求的:
sizeof(对象本身的大小是恒定的,缩进取决于它)和vector::size -
@WhozCraig 是的 :) 我只是澄清一下 OP 的要求,因为建议的链接没有涵盖这一点。
标签: c++ pointers memory integer-arithmetic