什么是字长边界?


0

我正在读这篇文章:

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

它说明如下:

“C结构直接对应于相同用途的汇编语言数据类型,并且都引用了一个连续的物理内存块,通常由字长边界定界(大小)。可以利用半字或字节边界的语言实现(在八十年代中期,人们认为更密集的包装,使用更少的记忆力。

什么是字长边界?

Answers:


0

有些架构会将数据对齐给定的字长(两个字节,四个字节等),从而在C中定义这个结构:

struct sample {
  int a;
  char b;
}

即使你期望它只有5个字节(a为4个字节,b为4个字节),最终可能会有8个字节的大小。这确保每个成员在4的位置开始。它取决于编译发生的体系结构。如果需要强行包装你可以这样做:

#pragma pack(1)
struct sample {
  int a;
  char b;
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.