2012-07-27 18 views
9

Bu basit SSE kodu: 0xffffffff bir segfault ile MSVC 10vektör push_back olmaz()

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

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

çöker.

Ne yanlış gidiyor olabilir?

+0

Hizalama olacak konu olacak. Soru şu: yardımcı olmuyor veri türü üzerinde nasıl ve howto düzeltme – sehe

+0

__declspec ekleme (hizalamak (16)). http://msdn.microsoft.com/en-us/library/ayeb3ayc.aspx bu tür – slaphappy

+1

değişkenler: Aynı zamanda, '__m128' doğal olarak hizalanmış gibi görünmektedir. Yığın belleğe yerleştirilen nesneler değil. – Puppy

cevap

13

bir std::vector__m128 veri saklamak için ihtiyacı, özel olarak hizalanmış bellek ayırmaz. İster ayırıcıyı değiştirmeli, ya da bir 4 şeritten oluşan bir diziyle değiştirmeli ve ardından hizalanmamış bir yük gerçekleştirmeli ya da vektöre her eriştiğinizde hizalanmış bir yere kopyalamanız gerekecektir.