use*_*586 8 c++ icc c++11 alignas
我正在尝试使用alignas作为类成员的指针,坦率地说,我不确定我应该把它放在哪里.
例如:
class A
{
private:
int n;
alignas(64) double* ptr;
public:
A(const int num) : n(num), ptr(new double[num])
{}
};
Run Code Online (Sandbox Code Playgroud)
我希望能确保ptr的数据在64字节块上对齐.使用英特尔编译器,它没有.
有人能指出我正确的方向吗?
alignas(N)在类的成员上使用关键字会导致此成员根据指定的对齐方式对齐,而不是可能指向的任何实体.毕竟,在使用值初始化指针时,无法控制已对齐的现有对象.
您可能想了解std::align()哪些内容
它返回一个相应对齐的指针,除非没有足够的空间来满足对齐和大小要求.如果没有enought空间,则该函数返回空指针.