请帮助我理解这个概念:
如果两者都声明和初始化,编译后哪个会占用更多内存?
struct V
{
int a, b;
};
struct X
{
struct V v;
int N;
};
或:
struct X
{
int a, b, c;
};
最佳答案
结构填充规则:
只有当一个结构成员后面跟着一个对对齐要求更大的成员或在结构的末尾时,才会插入填充。
最后一个成员用所需的字节数填充,以便结构的总大小应该是任何结构成员的最大对齐的倍数。
这表明两者将占用相同的内存空间,每个 12 字节,假设 int
的大小为 4
字节。原因是两种情况下都没有填充。
关于c - 下面两个例子编译后会占用相同的内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29652386/