簡體   English   中英

內存對齊的QVector()。data()

[英]Memory aligned QVector().data()

我正在使用Qt5編寫程序,並且需要分配一個QVector <float> ,它的data()指針對齊32個字節。

無論如何,我可以在不修改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 ++編譯器。

有兩種解決方案:

  1. 忘記了:使用std::vector和合適的分配器。 QVector的數據有效負載分配有alignof(T) 。¹
  2. SIMD處理具有32字節對齊的味道,因此您可以使用QVector<__m256i>或類似的東西,然后再進出reinterpret_cast

¹並非完全正確,請參見http://thread.gmane.org/gmane.comp.lib.qt.devel/22326/focus=22596

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM