gpt4 book ai didi

c++ - 如何为某个类的某些成员强制执行 16 字节对齐?

转载 作者:搜寻专家 更新时间:2023-10-31 02:13:49 27 4
gpt4 key购买 nike

假设我有这样的东西:

class C
{
private:
__m128i m0;
__m128i m1;
__m128i cm0;

int s0;

...

}

这可能会导致问题,因为不保证 m0、m1 和 cm0 是 16 字节对齐的,从而允许与对齐相关的访问冲突。如果我绝对想要拥有可以保证对齐的私有(private) simd 类成员,我应该怎么做?

编辑:特别是在我的例子中,我使用的是一个类的 std::vector ,该类具有 __m128i 成员(除了 32 位和 64 位整数之外。是否可以强制我的类成员在其中进行 16 字节对齐一个 std::vector?

最佳答案

这是我发现的解决我自己问题的解决方法。

我做了两件事:

最初,我一直在使用类似的东西:

std::vector<C> myVector(mySize);

我选择这样做:

C* myVector = _aligned_malloc(sizeof(C) * mySize, 16);

其次,我在类 C 中添加了一些可变填充,这样它的大小(以字节为单位)将是 16 的倍数。我不热衷于浪费空间,所以我可能会在未来重新做一些事情(也许是一个 block 用于 simd 变量的内存和用于其他变量的单独 block )。

关于c++ - 如何为某个类的某些成员强制执行 16 字节对齐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40754318/

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