__mm128的向量不会push_back()

时间:2012-07-27 00:02:17

标签: c++ visual-c++ sse

这个简单的SSE代码:

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

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

0xffffffff处发生段错误,导致MSVC 10崩溃。

可能出现什么问题?

1 个答案:

答案 0 :(得分:13)

std::vector不分配特殊对齐的内存,__m128需要存储它的数据。您必须换掉分配器,或者用4个浮点数组替换它,然后在每次访问向量时执行未对齐的加载或复制到对齐的位置。