创建对象时发生SSE访问冲突崩溃
SSE Access Violation crash on object creation
我创建了一个SSE供电的矢量类。
我在一个周期性调用的缺陷函数中创建了一个它的实例,这会导致程序在启动时崩溃。在宣布其为全球性的情况下,问题不会发生。
错误消息:进程返回-1073741819(0xC0000005)执行时间:3.471秒
这是一个简化的类:
#include <mmintrin.h>
alignas(16) class v3
{
public:
// constructors
inline v3() : m(_mm_setzero_ps()) {}
inline v3(float x, float y, float z) : m(_mm_set_ps(0, z, y, x)) {}
inline v3(__m128 m) : m(m) {}
// Member variables
union
{
struct { float x, y, z; };
__m128 m;
};
};
知道吗?
错误代码0xC0000005
是访问冲突。当涉及SSE时,这总是意味着您正在尝试未对齐的内存访问。您需要计算出哪个操作使用了未对齐的操作数。
我假设您使用的是Visual C++,因为您提到了windows风格的错误代码。根据MSDN,Visual C++不支持alignas
或alignof
。使用std::aligned_storage
可能运气更好,例如:
union {
_m128 m;
struct { float x,y,z };
std::aligned_storage<16> storage;
};
相关文章:
- 写入位置0x0000000C时发生访问冲突
- 引发异常:读取访问冲突**dynamicArray**为0x1118235.发生
- 链表中写入访问冲突的未知原因
- C++中的openCV Mat访问冲突
- C++尝试深度复制唯一指针时出现内存访问冲突
- C++ 中动态二维数组的访问冲突
- 从嵌套循环中的 std::list 中删除将返回访问冲突
- 使用向量的函数崩溃,调试器说访问冲突读取位置
- Windows C++程序中的访问冲突是否总是立即崩溃
- GetMonitorBrightness() 因访问冲突而崩溃
- 中止回复崩溃并出现访问冲突
- MEMCPY 后崩溃:访问冲突读取位置
- 创建对象时发生SSE访问冲突崩溃
- C++访问冲突崩溃
- Writefile导致崩溃,并导致访问冲突
- 在c++中对STL List使用push_back()会导致访问冲突,崩溃
- 访问计算机指针时发生访问冲突(c系统异常代码:c0000005),导致应用程序崩溃
- c++, WIN32, WndProc到成员函数崩溃(访问冲突0x88)
- 与JNI崩溃服务器JVM的访问冲突
- 通过WinAPI套接字连接到蓝牙设备时崩溃(读取位置0x00000004时发生访问冲突)