内存对齐其实就是两点
1.局部对齐 第一数据放在内存段初始的位置,后面每个数据存放的位置要注意 在当前数据类型大小和对齐系数之间取一个小的 例如下面 b存在的初始位置要在 short类型大小(2个字节) 和 对齐系数(#pragma pack(x) 这个宏命令可以修改大小)我当前编译器是4个字节 所以取两个字节 ,则在第一个数据类型后面补一个空的字节 以达到b起始位置是2的整数倍。
struct testAligned{
char a;
short b;
char c;
};
2.全局对齐 这样 上述结构体在内存中就是 2 + 2 + 1个字节的大小 , 所以最后还需要补齐字节以达到整体大小是结构体中最大数据类型和对齐系数中较小的大小的整数倍。因为对齐系数是4最大数据类型是2,所以整体需要是2的整数倍 再补一个字节就可以达到6 所以整体数据结构的大小就是6.
struct testAligned{
char a;
char c;
short b;
};
稍微修改一下 上述数据结构。这样在内存中只占用4个字节。对内存使用优化还是有一定帮助的。设计数据结构的时候务必遵循和利用好这个特性