您的位置:首页 > 其它

对字节对齐的理解

2011-01-05 13:48 225 查看
首先需要搞清楚“对齐”的概念(这是重点)

对齐:如果某成员位置到块开始之间的字节长度恰好为本成员长度的整数倍,则称本成员相对块开头对齐。 就像绳子的整数折一样。

1、根据对齐字节数(VC GCC默认为4字节)划出新块

2、将当前成员放到块中

3、处理下一个成员,根据本成员的长度找到本成员的对齐左边界,如果当前块还能放下本成员则执行2,否则执行1。

struct t
{
char t2;
short t3;
char t1;
char t4;
int t5;
}
main()
{
struct t t1;
int i;
memset(&t1, 0x0, sizeof(t1));
t1.t1=0x11;
t1.t2=0x22;
t1.t3=0x3333;
t1.t4=0x44;
t1.t5=0x55555555;

printf("/n%d", sizeof(struct t));
printf("/n");
for(i=0; i<sizeof(t1); i++)
{
printf("%02X ", ((char*)(&t1))[i]);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: