我正在尝试使用alignas
作为类成员的指针,坦率地说,我不确定我应该把它放在哪里。
例如:
class A
{
private:
int n;
alignas(64) double* ptr;
public:
A(const int num) : n(num), ptr(new double[num])
{}
};
我希望这能确保 ptr 的数据在 64 字节块上对齐。使用英特尔编译器,它不会。
谁能指出我正确的方向?
在类的成员上使用alignas(N)
关键字会导致该成员根据指定的对齐方式对齐,而不是任何可能指向的实体。毕竟,当用一个值初始化一个指针时,没有控制来对齐已经存在的对象。
你可能想看看std::align()
哪些需要
它返回一个相应对齐的指针,除非没有足够的空间来满足对齐和大小的要求。如果没有足够的空间,函数返回一个空指针。