属性打包
packed 是一个变量属性,与结构和联合使用,以最小化内存需求。
#include <stdio.h>
struct foo {
int a;
char c;
};
struct __attribute__((__packed__))foo_packed {
int a;
char c;
};
int main()
{
printf("Size of foo: %d\n", sizeof(struct foo));
printf("Size of packed foo: %d\n", sizeof(struct foo_packed));
return 0;
}
在我的 64 位 Linux 上,
- struct foo 的大小= 8 个字节
- struct foo_packed 的大小= 5 个字节
packed 属性限制编译器为保持内存对齐而执行的结构填充 。