任何编译器都会进行数据对齐。
第一个成员总是在偏移量为零的地方
第二其他成员需要对某个数进行对齐。(默认vs是8)要对齐到对齐数的正数倍处
其实可以理解为(取较小值)
第三结构体的总大小是最大对齐数的倍数
第四如果是嵌套结构体便它的(对齐数/被嵌套结构体最大对齐数)
为什么要进行数据对齐
有平台原因
某些平台不能随意的读取数据,只能在特定的地方读取特定的数据。
有性能的原因
在访问未对齐的数据的时候处理器需要两次访问,对齐数据的内存访问只需要一次。
结构体数据进行内存对齐是哪空间来换取时间的做法。
所以在创建结构体类型的时候需要将同样大小的数据尽量创建在一起
#pragma()
这个可以自定义对齐数