如何将结构保存在内存中C

C中的结构如何保存在内存中?

为什么有时候内存中的结构长度比预期的大?

这就是所谓的数据结构对齐 。

虽然不是一个完美的重复,你可以在结构填充和包装 C中找到一个很好的解释

  • 结构被存储为它们声明包含的变量的串联。
  • 变量按照声明的顺序存储。 结构的开始地址是它所包含的第一个变量的开始地址。
  • 结构内存布局中的其余变量之间可能存在差距(甚至在结构的结尾)。 这样做是为了将变量与从中获取它们的内存地址对齐 。
    • 一些体系结构只能获取对齐的数据。
    • 大多数可以获取未对齐数据的体系结构在执行时都会受到性能损失。