gpt4 book ai didi

STL unordered_map 因 __m128 值而崩溃

转载 作者:行者123 更新时间:2023-12-04 14:25:48 26 4
gpt4 key购买 nike

我跟踪了一个错误,将 __m128(SSE 向量)用作 std::unordered_map 中的值。
这会导致 mingw32 g++4.7.2 的运行时段错误。

请看下面的例子。
这有什么理由失败吗?
或者,可能有解决方法吗? (我尝试将值包装在一个类中,但没有帮助。)
谢谢。

#include <unordered_map>
#include <xmmintrin.h> // __m128
#include <iostream>

int main()
{
std::unordered_map<int,__m128> m;
std::cerr << "still ok\n";
m[0] = __m128();
std::cerr << "crash in previous statement\n";
return 0;
}

编译设置:
g++ -march=native -std=c++11

最佳答案

关于对齐有两个问题:

ABI 是否确保 __m128变量总是在堆栈上对齐?

是否全局new运算符返回内存为 __m128 适当对齐类型?即,以 16 字节对齐方式返回内存。

关于STL unordered_map 因 __m128 值而崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14664862/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com