为什么要为结构分配更多内存?

问题描述

考虑下面的代码

#include <stdio.h>

typedef struct aStruct {
    int numA;
    int numB;
    int numC;
    int numD;
    int numE;
}A;

typedef struct bStruct {
    int numF;
    int numG;
    int numH;
    A* a;
}B;

int main(void) {
    printf("Size of struct A: %lu\n",sizeof (A));
    printf("Size of struct B: %lu\n",sizeof (B));

    return 0;
}

当我在 64 位机器上编译并运行上面的代码

Size of struct A: 20
Size of struct B: 24

我不明白为什么结构 B 包含 24B。我希望它是 20B,三个整数成员为 12B,指针为 8B。一开始考虑内存对齐的原因,但是根据struct A的大小,系统可以分配20B。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)