可能重复:
SSE、内在函数和对齐
我是 SIMD 编程的新手,所以如果我问一个明显的问题,请原谅。
我进行了一些试验,并达到了我想将 SIMD 值存储在动态分配的结构中的地步。
这是代码:
struct SimdTest
{
__m128 m_simdVal;
void setZero()
{
__m128 tmp = _mm_setzero_ps();
m_simdVal = tmp; // <<--- CRASH ---
}
};
TEST( Plane, dynamicallyAllocatedPlane )
{
SimdTest* test = new SimdTest();
test->setZero();
delete test;
}
当执行带有 CRASH 注释的方法时,代码会崩溃并出现以下异常:
Unhandled exception at 0x775315de in test-core.exe: 0xC0000005: Access violation reading location 0x00000000
有人可以解释为什么分配操作会中断,以及应该如何动态分配包含 SIMD 的对象以使其正常工作?
我需要补充一点,如果我静态实例化 SimdTest 对象并调用 setZero 方法,一切正常。
谢谢, 帕克萨斯