在C中使用padding struct有什么用?
答案 0 :(得分:12)
如果只进行对齐访问,某些体系结构的性能会更好,因此将32位对象放在32位边界上,将64位对象放在64位边界上可以提高应用程序的速度。
有些架构完全无法进行不对齐的访问,而在这些架构中,填充不是一个真正的灾难。
答案 1 :(得分:3)
有关更多信息,请参阅此Wikipedia article,但基本上是为了确保结构占用精确的字节数 - 正如Steve314所述,这意味着sizeof
是对齐的精确倍数。 / p>
数据对齐意味着将数据放入存储器偏移量等于字大小的某个倍数,这会因CPU处理内存的方式而提高系统性能。为了对齐数据,可能需要在最后一个数据结构的末尾和下一个数据结构的开头之间插入一些无意义的字节,即数据结构填充。
你也应该知道,虽然这对程序员来说非常重要,但是现在它变得不那么重要了,因为它经常由编译器为你处理。将有一些编译器选项允许您控制该过程。