有各种用于控制结构/类布局的pragma,如pragma pack。但据我所知,没有pragma可以说“我不在乎布局。它是内部的,代码不依赖它。重新排序它以获得最佳的性能/大小”。AFAIK,这是典型的情况,它可以提高性能/规模在许多情况下。此外,即使程序员非常小心地重新排序它的性能/大小,一个不同的目标体系结构可能有一个不同的最佳布局。
编辑:澄清一下,我说的是会员的顺序。填充物已经可控了。
另外,PVS有一个相关的消息。这就是我要说的--为什么不能用一个带有pragma的编译器来完成
发布于 2014-10-16 15:49:24
该语言特别指出,类成员在内存中的排序方式与它们在每个访问级别(如private)中的顺序相同。实用主义是不可能推翻这种行为的。
见9.2/14:
分配具有相同访问控制(第11条)的(非联合)类的非静态数据成员,以便以后的成员在类对象中具有更高的地址。不指定具有不同访问控制的非静态数据成员的分配顺序。
请记住,重新排序成员将更改子对象构造函数和析构函数的调用顺序,可能还会更改其他事情。即使给编译器在幕后进行这类更改(如果您有一个成员依赖于另一个成员的初始化),这似乎是非常危险的。
https://stackoverflow.com/questions/26408426
复制相似问题