我正在读这篇文章:
http://en.wikipedia.org/wiki/Struct_%28C_programming_language%29
它说明如下:
“C结构直接对应于相同用途的汇编语言数据类型,并且都引用了一个连续的物理内存块,通常由字长边界定界(大小)。可以利用半字或字节边界的语言实现(在八十年代中期,人们认为更密集的包装,使用更少的记忆力。
什么是字长边界?
我正在读这篇文章:
http://en.wikipedia.org/wiki/Struct_%28C_programming_language%29
它说明如下:
“C结构直接对应于相同用途的汇编语言数据类型,并且都引用了一个连续的物理内存块,通常由字长边界定界(大小)。可以利用半字或字节边界的语言实现(在八十年代中期,人们认为更密集的包装,使用更少的记忆力。
什么是字长边界?
Answers:
有些架构会将数据对齐给定的字长(两个字节,四个字节等),从而在C中定义这个结构:
struct sample {
int a;
char b;
}
即使你期望它只有5个字节(a为4个字节,b为4个字节),最终可能会有8个字节的大小。这确保每个成员在4的位置开始。它取决于编译发生的体系结构。如果需要强行包装你可以这样做:
#pragma pack(1)
struct sample {
int a;
char b;
}