C++字节对齐
字节对齐
有些平台每次读都是从偶地址开始,如果一个int型(假设为32位系统)如果存放在偶地址开始的地方,那 么一个读周期就可以读出这32bit,而如果存放在奇地址开始的地方,就需要2个读周期,并对两次读出的结果的高低字节进行拼凑才能得到该32bit数 据。显然在读取效率上下降很多。为了保证读取效率,c/c++变量地址要保证字节对齐。
- 结构中变量的起始地址 要为该变量类型 大小的整数倍,例如 sizeof(int) = 4 那么结构体中这个变量的存储起始地址 % 4 == 0才行。如果不行,会在前方自动填充0。
- 最后即便前面所有都填充完了,最后总的占用的字节数 要是 结构中最大类型数据所占用字节数的倍数,如果不是,最后再填充一次。
1 | struct MyStruct |