«November 2008»
1
2345678
9101112131415
16171819202122
23242526272829
30
 导 航
首页(4)
技术(0)
自我管理(1)
论坛新帖

 公 告
暂无公告...

 日 志
·日历的计算-整理
·时间管理
·<<十种技巧让工作变得...
·字节对齐

 评 论

 链 接

 统 计
博客名称:lei
日志总数:4
评论数量:0
访问次数:2601
建立时间:2006年3月22日
 [技术]字节对齐
 lei001 发表于 2008-8-31 0:32:00

      字节对齐是C/C++编译器为了加速CPU寻址速度而采用的一种策略,通常的表现是将结构中某些不足CPU字长的成员填入若干字节的垃圾值使整个结构的大小成为CPU字长的整数倍。一个CPU的字长,通常简单地理解为一个sizeof(int)的大小。

     字节对齐的规律是:

     假设结构体的其实地址为0,    N字节对齐

   1)结构体成员变量地址是min(变量类型大小,N)的整数倍,否则补齐。

    2)结构体的长度为结构体中所有对齐参数的整数倍,否则补齐。

举例说明:

#include "stdio.h"

#pragma pack(4)
#pragma pack(push)
#pragma pack(4)
struct{
short a1; //2
short a2; //2
char a3;  //1
}A; //5+1

struct{
short a1; //2
char a2;  //1+1
short a3;  //2
}B; //6

struct{
long a1; //4
short a2; //2
}C; //6+2

struct{
short a1; //2+2
long a2;  //4
short a3; //2
}D; //10+2

struct{
char a1; //1
char a3;  //1
}E; //2

#pragma pack(pop)    


void main(void)
{
int num;
num = sizeof(A);
num = sizeof(B);
num = sizeof(C);
num = sizeof(D);
num = sizeof(E);
}

 阅读全文(241) | 回复(0)

0
顶一下

 评 论

发表点评:
昵 称: 匿名
验证码: 5651

日志搜索: