【发布时间】:2010-12-22 22:45:09
【问题描述】:
可能重复:
Why isn’t sizeof for a struct equal to the sum of sizeof of each member?
考虑以下 C 代码:
#include <stdio.h>
struct employee
{
int id;
char name[30];
};
int main()
{
struct employee e1;
printf("%d %d %d", sizeof(e1.id), sizeof(e1.name), sizeof(e1));
return(0);
}
输出是:
4 30 36
为什么结构的大小不等于其各个组件变量的大小之和?
【问题讨论】:
-
您可以使用 gcc 中打包的属性。这将删除填充并保持结构尽可能小。结构 test_t { int c; } 属性__((__packed));
-
eaanon01.你不应该告诉任何人像属性打包这样不可移植的事情,除非有一个非常好的理由并且所有的含义都被理解了。
-
请参阅此 C 常见问题解答以了解内存对齐。 c-faq.com/struct/align.esr.html
标签: c struct structure-packing