Struct内存对齐问题
这个问题可以说是很多职场上问的很多的问题,有的公司也将它作为必考题,虽说实际大部分人编程可能不需要care这些事情;就像大部分C++ programmer并不需要关心也不使用C++的元编程一样...;
这个问题引用网络上的一句总结吧:
背书式:各成员变量存放的起始地址相对于结构的起始地址的偏移量必须为该变量的类型所占用的字节数的倍数 各成员变量在存放的时候根据在结构中出现的顺序依次申请空间 同时按照上面的对齐方式调整位置 空缺的字节自动填充 同时为了确保结构的大小为结构的字节边界数(即该结构中占用最大的空间的类型的字节数)的倍数,所以在为最后一个成员变量申请空间后 还会根据需要自动填充空缺的字节
这句话解释了网络上大部分罗里吧嗦也不一定解释得清楚的简单的东西, 如果真想在深入了解应该去了解的是cpu的设计相关,取指令与指令流水线以及为什么要尽量介绍内存访问的内容;而不是纠结于编程中的内存对齐不对齐的问题, 因为不对齐,也没问题呀... /坏笑