一、字节对齐目的及原因
1.目的:为提高程序的性能
2.原因:为访问未对齐的内存,处理器需要做两次内存访问,而对于对齐的内存仅需要访问一次。
二、字节对齐要区分的四个概念
1.基本数据类型的自身对齐值:(以32位x86机器为例)
char型:1字节
short型:2字节
int型、float型:4字节
double型:8字节
2.程序指定对齐值:
#pragma pack(value)
即指定对齐值为value
3. 自定义类型的自身对齐值:结构体或类中自身对齐值中最大的值
4. 自定义类型的有效对齐值:自定义类型的自身对齐值和指定对齐值中较小的值
例子:
#pragma pack(4) //指定对齐值为4
struct test
{
char a; //1 + 1
short b; //2 自身对齐值为2
char c;