【发布时间】:2021-12-26 15:32:21
【问题描述】:
structs 在 C++ 中究竟是如何打包和填充的?该标准没有说明它应该如何完成(据我所知),编译器可以做任何他们想做的事情。但是有教程展示了如何使用已知规则有效地打包structs(例如,每个变量都需要位于其大小的倍数的地址上,如果前一个变量的结尾不是多个,则将插入填充),使用这些规则,我们可以在源代码中手动打包structs。最后是什么?我们知道structs 将以何种方式封装在现代机器(例如 PC)上,或者这只是一种想法,可能是正确的,但认为它是理所当然的并不好?
【问题讨论】:
-
它是特定于编译器的。这些教程可能假设您使用的是特定的编译器。
-
基本类型的大小也因实现而异,固定大小的算术类型是可选的,因此严格手工打包是不可移植的。
标签: c++ struct padding packing