西药大全:测试一下GCC字节对齐的效果

来源:百度文库 编辑:九乡新闻网 时间:2024/05/01 00:27:54
有以下结构体,在不强制按1字节对齐的情况下,sizeof他们的大小会是多少?

struct TEST1
{
int a;
short b;
char c;
);
sizeof(struct TEST1)=8 //总字节数是7,按四字节对齐,结果应该是8

struct TEST2
{
char a;
int b;
short c;
};
sizeof(struct TEST2)=12 //这里就很奇怪了,为什么是12呢?照我的理解,结构体的大小应该是在总长度的基础上按四字节对齐。

以上的例子说明了,结构体中的字节对齐,如果成员的大小大于等于4字节,则以4字节对齐,然后再排列下一个成员。如果两个成员的大小加起来大于四字节,则这两个相邻成员仍分别按照四字节对齐。仅当两个相邻成员的总大小在四字节内的时候,才会一起按照四字节对齐。