<分区>
Possible Duplicate:
SSE, intrinsics, and alignment
我是 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 方法,一切正常。
谢谢, 帕克萨斯