__mm128 的向量不会 push_back() [英] vector of __mm128 won't push_back()
本文介绍了__mm128 的向量不会 push_back()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这个简单的 SSE 代码:
This simple SSE code:
#include <vector>
#include <emmintrin.h>
int main() {
std::vector<__m128> blah;
blah.push_back(__m128());
}
在 MSVC 10 上崩溃,0xffffffff
出现段错误.
Crashes on MSVC 10 with a segfault at 0xffffffff
.
可能出了什么问题?
推荐答案
std::vector
不分配特殊对齐的内存,__m128
需要存储它的数据.您将不得不换出分配器,或者用 4 个浮点数组替换它,然后在每次访问向量时执行未对齐的加载或复制到对齐的位置.
A std::vector
does not allocate specially aligned memory, which __m128
needs to store it's data. You will have to either swap out the allocator, or replace it with an array of 4 floats and then perform an unaligned load or copy out to an aligned location every time you access the vector.
这篇关于__mm128 的向量不会 push_back()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文