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