SIMD и динамическое распределение памяти [дубликаты]
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, все работает нормально.
Спасибо, Паксас