对数据对齐的一些思考:
参见inforoc的文章。
下面是在solaris8上的试验结果:
联合的sizeof值为联合内最大数据类型的size;
结构的sizeof值为结构内最大数据类型size的整数倍。对齐的原则是数据项只能存储在地址是数据项大小的整数倍的内存位置上。因此,补齐的部分都是加在最靠近size比之大的数据项的那个变量身上。
举例而言:
union{
char a;
int b;
float c;
double d;
}utest;
sizeof(utest)=8; //sizeof的值是联合内最大数据类型的size。
struct{
char a;
int b;
double c;
char d;
char e;
char f;
char g;
char h;
int j;
}stest;
sizeof(stest)=32; //补齐发生在a后面3个字节;h后面3个字节;j后面4个字节。
博客围绕数据对齐展开思考,介绍了在Solaris 8上的试验结果。联合的sizeof值为联合内最大数据类型的size,结构的sizeof值为结构内最大数据类型size的整数倍,数据项存储有对齐原则,还通过具体代码示例展示了补齐情况。
241

被折叠的 条评论
为什么被折叠?



