【发布时间】:2019-02-04 10:32:30
【问题描述】:
我在维基百科和这里的一些关于处理器对齐的堆栈溢出的答案中都阅读过,但有一点我不明白:
如果 32 位处理器对齐到 4 个字节增量,为什么 struct.pack('BH', 1, 2) 会在中间添加一个空字节?
short 不会以可被 4 整除的地址为边界(只能被 2 整除),当处理器读取一个字时,无论是在中间还是在末尾,它都会读取所有 4 个字节.
它也没有为更多数据做好准备,因为另一个字节可以加入地址 3-4 并且不占用额外空间,同时完美地 1 字节对齐。
【问题讨论】:
标签: python python-3.x struct memory-alignment