__mm128的向量不会push_back()

sla*_*ppy 9 c++ sse visual-c++

这个简单的SSE代码:

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

int main() {
    std::vector<__m128> blah;
    blah.push_back(__m128());
}
Run Code Online (Sandbox Code Playgroud)

在MSVC 10上崩溃时出现段错误0xffffffff.

怎么可能出错?

Pup*_*ppy 13

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