2012-07-27 2 views
9

이 간단한 SSE 코드 : 0xffffffff에서 세그먼트 폴트와 MSVC 10벡터와 push_back하지 않습니다()

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

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

충돌.

무엇이 잘못 될 수 있습니까?

+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 개의 부동 소수점 배열로 대체 한 다음 정렬되지 않은로드를 수행하거나 벡터에 액세스 할 때마다 정렬 된 위치로 복사해야합니다.

관련 문제