![]() |
1
27
struct模块模仿C结构。处理器读取奇数地址上的16位字或不能被4整除的地址上的32位dword需要更多的CPU周期,因此结构添加“pad bytes”使结构成员落在自然边界上。考虑:
这个结构将占用12个字节的内存(x是pad字节)。 Python的工作原理类似(参见 struct
编译器通常有一种消除填充的方法。在Python中,=<>!将消除填充:
通常分别为4字节和8字节。填充发生在结构的末尾,以防在数组中使用这些结构。这将使“a”成员在数组后面的结构的正确边界上保持对齐。Python的struct模块不在末尾填充:
|
![]() |
2
8
默认情况下,在许多平台上,short将以2的倍数与偏移量对齐,因此在char后面会添加一个填充字节。
要禁用此功能,请使用:
|
![]() |
cobb208 · Malloc正在为释放指针引发错误 2 年前 |
![]() |
kernel · 打印结构数组内容时出错 2 年前 |
![]() |
mwitz · 在Rust中无法正确写入结构的函数属性 2 年前 |
![]() |
Ulysses · 无法访问结构字段(Rust) 2 年前 |
![]() |
Tor · 使用Box<None>值初始化struct 2 年前 |
![]() |
Yestin · Golang如何初始化数组结构[duplicate] 2 年前 |