c++ - __mm128 的 vector 不会 push_back()

标签 c++ visual-c++ sse

这个简单的 SSE 代码:

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

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

在 MSVC 10 上崩溃并在 0xffffffff 处出现段错误。

可能出了什么问题?

最佳答案

std::vector 不分配特殊对齐的内存,__m128 需要用它来存储它的数据。您将不得不换出分配器,或者将其替换为 4 个 float 的数组,然后在每次访问 vector 时执行未对齐的加载或复制到对齐的位置。

关于c++ - __mm128 的 vector 不会 push_back(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11679741/

相关文章:

c++ - 如何实例化一个只知道其名称的对象?

c++ - 为什么 OpenCL 嵌套循环只适用于某些元素

visual-studio - VC++ Visual Studio 在子目录中添加了 .hpp 文件,但得到 "Error: cannot open source file ..."

c++ - 将内联数学库与预编译头文件结合使用时出现链接错误

c++ - 是否存在 "finally"构造在 C++ 中有用的情况?

c++ 为什么我不能将 CDC 和 CBitmap 类型传递给另一个类的参数?

c++ - 为什么 g++ 允许返回不可复制的类?

c - 如何有效地计算只有几个周期长的函数的执行时间?

c - 如何在 C 中打印 __m128i 变量的位?

C++:将输入的不同部分分配给不同的变量