2012-07-27 8 views
9

この単純なSSEコード:MSVC 10上__mm128のベクトル(一backない)

#include <vector> 
#include <emmintrin.h> 

int main() { 
    std::vector<__m128> blah; 
    blah.push_back(__m128()); 
} 

クラッシュ0xffffffffでセグメンテーション違反を有します。

何が問題になる可能性がありますか?

+0

アライメントが問題になります。問題は:how and howto fix – sehe

+0

データ型に__declspec(align(16))を追加することは役に立ちません。また、 '__m128'はネイティブで整列しているようです:http://msdn.microsoft.com/en-us/library/ayeb3ayc.aspx – slaphappy

+1

そのタイプの変数。ヒープメモリに配置されたオブジェクトではありません。 – Puppy

答えて

13

std::vectorは、特別に整列されたメモリを割り当てません。__m128はデータを格納する必要があります。アロケータをスワップアウトするか、4つの浮動小数点数の配列で置き換えてから、ベクタにアクセスするたびに整列されていないロードを実行するか、整列した位置にコピーアウトする必要があります。

関連する問題