C 语言数据对齐
来源:互联网 发布:windows官网 编辑:程序博客网 时间:2024/04/30 23:12
#include <stdio.h>
struct Foo1
{
char a;
int b;
char c;
int d;
};
#pragma pack (2)
struct Foo2
{
char a;
int b;
char c;
int d;
};
#pragma pack ()
struct Foo3
{
char a;
char c;
int b;
int d;
};
struct Foo4
{
char a;
int b;
char c;
int d;
} __attribute__ ((__packed__));
int main(int argc, char **argv)
{
printf("size of Foo1: %d ", sizeof(struct Foo1));
printf("size of Foo2: %d ", sizeof(struct Foo2));
printf("size of Foo3: %d ", sizeof(struct Foo3));
printf("size of Foo4: %d ", sizeof(struct Foo4));
return 0;
}
下面的小程序是关于数据对齐的一个试验,在我的 2.4 内核的 Linux 上运行结果如下:
size of Foo1: 16
size of Foo2: 12
size of Foo3: 12
size of Foo4: 10
1、 Foo1 未经过任何处理的,由于整型需要按 4 字节对齐,因此实际存储结果如下,占用 16 个字节空间
2、Foo2 通过 #pragma pack (2) ,将对齐方式改为 2 字节对齐,实际存储结果如下,占用 12 字节空间
3、 Foo3, 通过 #pragma pack (),又恢复到默认的 4 字节对齐方式,但是由于调整了变量的顺序,实际存储结果如下,占用 12 字节空间
4、Foo4, 通过 GCC 的 __packed__ 的扩展属性,禁止对齐,得到如下结果,占用空间 10 字节
- C 语言数据对齐
- C语言:数据对齐
- 【C语言】数据对齐
- C语言字节对齐 数据对齐详解
- C语言字节对齐 数据对齐详解
- C语言中数据对齐
- C语言结构体中的数据对齐
- 转载 C语言中的数据对齐
- C语言中的数据对齐问题
- C语言中的数据对齐问题
- 浅谈C语言中的数据对齐
- c语言结构体数据对齐问题
- 浅析C语言中的数据对齐
- 数据对齐---C语言:内存字节对齐详解
- 数据对齐---C语言:内存字节对齐详解
- [转载] C语言中数据对齐的研究
- C语言中的结构体数据存储-对齐规则
- C语言中的结构体数据存储-对齐规则
- 开始我新的一天!!!
- 开始学习了,呵呵
- 收支管理,如何能知道,自己到底还有多少钱呢?
- 可以让你少奋斗十年的工作经验
- [水晶报表]水晶报表创建以及调用方法
- C 语言数据对齐
- windows下建立QT开发环境!
- Oracle 10g Data Pump Expdp/Impdp 详解
- EBox3300开发简明流程
- StringBuilder
- 中央政治局会议研究建立干部考核评价机制
- javascript--弹出对话框 四种对话框 获得用户输入值
- ini文件相关
- static 变量和static 函数