什么是字长边界?

什么是字长边界?

我正在读这篇文章:

http://en.wikipedia.org/wiki/Struct_%28C_programming_language%29

其中指出:

“C 结构直接对应于具有相同用途的汇编语言数据类型,并且两者都引用连续的物理内存块,通常由字长边界分隔(大小)。在 80 年代中期,能够利用半字或字节边界(提供更密集的打包,使用更少的内存)的语言实现被认为是先进的。”

什么是字长边界?

答案1

一些体系结构将按给定的字长(两字节、四字节等)对齐数据,因此在 C 中定义此结构:

struct sample {
  int a;
  char b;
}

即使您预计它只有五个字节(a 为四个字节,b 为一个字节),最终大小也可能为八个字节。这确保每个成员都从 4 的倍数位置开始。并且它取决于编译发生的体系结构。如果需要强制打包,您可以这样做:

#pragma pack(1)
struct sample {
  int a;
  char b;
}

相关内容