在类级别对齐和可变级别对齐之间进行选择

时间:2021-04-16 16:44:32

标签: c++ memory-alignment

假设我在类 aligned_ 中有一个成员变量 A,它应该是 64 字节对齐的

class A {
    int val1_;
    int val2_;
    ....
    __m256i aligned_;
};

我都可以

class alignas(64) A {
    __m256i aligned_;
    int val1_;
...

alignas(64) __m256i aligned_;

我正在纠结哪个更好。到目前为止,我有以下结论:

  1. 使用类级别对齐可以节省空间,因为所有变量都彼此相邻,但我必须将对齐的变量作为第一个成员,这扰乱了我将相关成员变量放在一起的编码习惯。

  2. 使用变量级别对齐解决了1中提到的问题,但在要对齐的变量之前需要额外的空间。这使得 A 类占用的空间超出了需要

我想听听您对这个话题的建议。谢谢!

0 个答案:

没有答案
相关问题