请帮我理解这个概念:

如果两者都声明和初始化,编译后哪个会占用更多内存?

struct V
{
    int a, b;
};

struct X
{
    struct V v;
    int N;
};

或:
struct X
{
    int a, b, c;
};

最佳答案

结构填充规则:

  • Padding 仅在结构成员后跟具有较大对齐要求的成员或在结构末尾时插入。
  • 最后一个成员填充了所需的字节数,以便结构的总大小应该是任何结构成员的最大对齐的倍数。

  • 这表明两者都将占用相同的内存空间,假设 int 的大小为 4 字节,则每个 12 字节。原因是两种情况下都没有填充。

    关于c - 下面两个例子编译后占用的内存相等吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29652386/

    10-11 18:14