对字节对齐的理解

来源:互联网 发布:vb.net string.format 编辑:程序博客网 时间:2024/04/27 14:54

首先需要搞清楚“对齐”的概念(这是重点)

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

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]);
 }
}

原创粉丝点击