2

我正在使用 Qt5 编写一个程序,我需要分配一个32 字节对齐QVector <float>的指针。data()

无论如何我可以在不修改 Qt 库本身的情况下做到这一点吗?

我的代码看起来像这样:

QVector <float> vec;
vec.resize(n);
float *wricker_ptr = wricker.data(); // this should be 32-byte aligned
for (int i=0; i<n; i++)
{
    wricker_ptr[i] = /* some computed value */;
}

我正在使用英特尔的 C++ 编译器。

4

1 回答 1

4

想到了两个解决方案:

  1. 算了:使用std::vector和合适的分配器。QVector的数据有效负载分配有alignof(T)
  2. 32 字节对齐有 SIMD 处理的味道,因此您可以使用 aQVector<__m256i>或类似reinterpret_cast的进出。

¹ 不完全正确,请参阅http://thread.gmane.org/gmane.comp.lib.qt.devel/22326/focus=22596

于 2015-08-20T10:35:29.927 回答