Möglicher Duplikat:
SSE, Intrinsiken und Ausrichtung
Ich bin neu in der SIMD-Programmierung, also verzeihen Sie mir bitte, wenn ich eine offensichtliche Frage stelle.
Ich habe ein wenig experimentiert und bin zu dem Punkt gekommen, an dem ich einen SIMD-Wert in einer dynamisch allokierten Struktur speichern möchte.
Hier ist der Code:
struct SimdTest
{
__m128 m_simdVal;
void setZero()
{
__m128 tmp = _mm_setzero_ps();
m_simdVal = tmp; // <<--- CRASH ---
}
};
TEST( Plane, dynamischAllokiertesPlane )
{
SimdTest* test = new SimdTest();
test->setZero();
delete test;
}
Wenn die mit CRASH kommentierte Methode ausgeführt wird, stürzt der Code mit der folgenden Ausnahme ab:
Unhandled exception at 0x775315de in test-core.exe: 0xC0000005: Zugriffsverletzung beim Lesen der Adresse 0x00000000
Könnte mir bitte jemand erklären, warum die Zuweisungsbetriebung fehlschlägt und wie SIMD-Objekte dynamisch allokiert werden müssen, damit sie einwandfrei funktionieren?
Ich muss hinzufügen, dass wenn ich ein SimdTest-Objekt statisch instanziiere und die setZero-Methode aufrufe, alles reibungslos funktioniert.
Danke, Paksas