gpt4 book ai didi

c++ - 与 alignas 语法作斗争

转载 作者:可可西里 更新时间:2023-11-01 17:54:19 26 4
gpt4 key购买 nike

我正在尝试使用 alignas 作为类成员的指针,坦率地说,我不确定我应该把它放在哪里。

例如:

class A
{
private:
int n;
alignas(64) double* ptr;

public:
A(const int num) : n(num), ptr(new double[num])
{}
};

我希望这将确保 ptr 的数据在 64 字节 block 上对齐。使用英特尔编译器,它不会。

谁能指出我正确的方向?

最佳答案

在类的成员上使用 alignas(N) 关键字会导致此成员 根据指定的对齐方式而不是任何可能指向的实体进行对齐。毕竟,当用值初始化指针时,无法控制对齐已经存在的对象。

您可能想看看 std::align()这需要

  1. 返回指针对齐的规范。
  2. 对齐 block 的大小。
  3. 指向已分配内存的指针。
  4. 分配的内存量。

它返回一个相应对齐的指针,除非没有足够的空间来满足对齐和大小要求。如果没有足够的空间,该函数返回一个空指针。

关于c++ - 与 alignas 语法作斗争,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27534403/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com