<分区>
考虑在具有以下类型对齐的 x64 位 Windows 操作系统上工作:
据我所知,做这样的事情是非常糟糕的:
struct X_chaotic
{
bool flag1;
double d1;
bool flag2;
double d2;
bool flag3;
double d3;
//... and so on ...
};
根据 C++ Alignment, Cache Line and Best Practice 和 Data structure alignment , 写这个应该更好/更快并且更紧凑:
struct X_alignOrder
{
double d1;
double d2;
double d3;
//... all other doubles ...
bool flag1;
bool flag2;
bool flag3;
//... all other bools ...
};
成员按照对齐大小的顺序声明,从最高对齐开始。
可以肯定地说按对齐大小对数据成员的声明排序是个好主意吗?你会说这是最佳实践吗?还是没有区别?
(我听说编译器不能重新排列定义的顺序,因为 C++ 标准,这甚至适用于在类的访问说明符 block 中声明的所有数据成员)
因为我从未在 Scott Meyers 的书中或 Bjarne Stroustrup 的书中读到过这方面的内容,所以我想知道我是否应该开始通过日常工作的对齐方式重新排序数据声明。