结构包装和填充究竟是如何工作的?
How exactly structure packing and padding work?
struct
在c++中是如何打包和填充的?该标准没有说明应该如何完成(据我所知),编译器可以做任何他们想做的事。但是有一些教程展示了如何使用已知规则有效地打包 struct
s(例如,每个变量都需要位于其大小的倍数的地址上,如果前一个变量的结尾不是多个,则将插入填充),并且有了这些规则,我们可以在源代码中手动打包 struct
s。最后是什么?我们知道 struct
s 将以何种方式打包在现代机器(例如 PC)上,或者只是想法可能是正确的,但认为这是理所当然的并不好?
How exactly structs are packed and padded in c++?
简答:满足对齐要求的方式。
The standard does not says anything about how it should be done (as far as I know) and compilers can do whatever they want.
在对齐要求的范围内,这确实是正确的。这也是对你问题的回答。
struct
在c++中是如何打包和填充的?该标准没有说明应该如何完成(据我所知),编译器可以做任何他们想做的事。但是有一些教程展示了如何使用已知规则有效地打包 struct
s(例如,每个变量都需要位于其大小的倍数的地址上,如果前一个变量的结尾不是多个,则将插入填充),并且有了这些规则,我们可以在源代码中手动打包 struct
s。最后是什么?我们知道 struct
s 将以何种方式打包在现代机器(例如 PC)上,或者只是想法可能是正确的,但认为这是理所当然的并不好?
How exactly structs are packed and padded in c++?
简答:满足对齐要求的方式。
The standard does not says anything about how it should be done (as far as I know) and compilers can do whatever they want.
在对齐要求的范围内,这确实是正确的。这也是对你问题的回答。