__mm128 的向量不会 push_back() [英] vector of __mm128 won't push_back()

查看:38
本文介绍了__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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆