数据在计算机内存储涉及到内存字节对齐机制,它是为了最大限度的减少内存读取次数。因为CPU读取速度比内存读取速度快至少一个数量级,所以为了节省运算花费时间,只能以牺牲空间来换取时间了。
#pragma pack(n)
#pragma pack(n) 其作用是指定编译器的字节对齐参数为n
用法
#pragma pack(n)
代码
#pragma pack()
代表在这之间的代码数据按n字节对齐进行存储。
#pragma pack(push)
#pragma pack(push) //保存当前对齐状态,类似于一个压栈操作
用法
#pragma pack(push,4) //保存当前对齐状态,并设定为4字节对齐
#pragma pack(pop) //恢复对齐状态
字节对齐规则
成员对齐
每个成员按其类型的对齐参数(通常是这个类型的大小)和指定对齐参数中较小的一个对齐。结构的长度必须为所用过的所有对齐参数的整数倍。
结构、类对齐
对于结构来说,它的对齐方式就是它的所有成员使用的对齐参数中最大的一个。