这个简单的SSE代码:
#include <vector>
#include <emmintrin.h>
int main() {
std::vector<__m128> blah;
blah.push_back(__m128());
}
在0xffffffff
处发生段错误,导致MSVC 10崩溃。
可能出现什么问题?
答案 0 :(得分:13)
std::vector
不分配特殊对齐的内存,__m128
需要存储它的数据。您必须换掉分配器,或者用4个浮点数组替换它,然后在每次访问向量时执行未对齐的加载或复制到对齐的位置。