作者在 2010-02-25 22:51:06 发布以下内容
1、如该结构体:
struct foo
{
int i ;
char c[2] ;
short s ;
}
现在假设int是32位,char是8位,short是16位,sizeof(foo)将会是多少呢?直观上认为是4+2+2为8字节,可是在许多体系结构上,访问自然对齐的数据元素的速度则比较快,因此,编译器将会按照最佳对齐情况的需要填充字节。如果是4字节对齐,则sizeof(foo)将等于12.
microsoft visual c++有提供#pragma pack来指定对齐方式
如:#pragma pack(8)