内存对齐问题

1.什么是内存对齐,先看下面一段程序,运行环境为VS2017
内存对齐问题
其运行结果为:内存对齐问题
由此可知以下几点:1.变量都存放在偶数开头的地址 2.结构体大小不是结构体各元素大小的简单相加 3.默认对齐
2.如何避免内存对齐带来的影响
内存对齐会牺牲一点存储空间,对于上述例子中,可以把char c提到char a后面可避免内存对齐影响,保证自然对齐
3.除此之外还可以用#pragma pack(n) #pragma pack()改变中间数据对齐规则
4.规则 1.每个成员按自己的方式对齐,最小化长度
2.复杂结构对齐方式是它里面最长哪个为准
3.对齐后的长度必须是里面最大元素的整数倍