我对对齐要求和字长感到困惑。我正在使用 64 位处理器,所以字长是 8,这意味着分配的地址应该是 8 的倍数,对吧?
但alignof
给了我意想不到的结果。
struct A
{
int a;
char b;
}
输出:
sizeof(A): 8
alignof(A): 4 // why?
相比下,
sizeof(double): 8
alignof(double): 8
如果我碰巧提供的地址是 4 的倍数但不是 8 的倍数A
,性能会因为多了一次访问而降低,对吗?
是因为alignof()
提供了我们需要遵循的最少要求,而在这个特定示例中对齐 8 个字节更好地与简单的内存性能权衡?