结构包装和填充究竟是如何工作的?

How exactly structure packing and padding work?

struct在c++中是如何打包和填充的?该标准没有说明应该如何完成(据我所知),编译器可以做任何他们想做的事。但是有一些教程展示了如何使用已知规则有效地打包 structs(例如,每个变量都需要位于其大小的倍数的地址上,如果前一个变量的结尾不是多个,则将插入填充),并且有了这些规则,我们可以在源代码中手动打包 structs。最后是什么?我们知道 structs 将以何种方式打包在现代机器(例如 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.

在对齐要求的范围内,这确实是正确的。这也是对你问题的回答。