我正在尝试使用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)
类成员上的关键字会导致此问题member根据指定的对齐方式进行对齐,而不是任何潜在指向的实体。毕竟,当用值初始化指针时,无法控制对齐已经存在的对象。
您可能想看看std::align() http://en.cppreference.com/w/cpp/memory/align这需要
- 返回指针的对齐规范。
- 对齐块的大小。
- 指向已分配内存的指针。
- 分配的内存量。
它返回一个相应对齐的指针,除非没有足够的空间来满足对齐和大小要求。如果没有足够的空间,函数将返回空指针。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)