问题描述
考虑下面的代码
#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 (将#修改为@)