Wird XMVECTOR von DirectXMath als Klassenmitglied verwendet, führt dies nur im Freigabemodus zu einem Absturz.

Ich habe versucht, XMVECTOR als Klassenmitglied für einen Begrenzungsrahmen zu verwenden, da ich viele Berechnungen durchführe, aber ich verwende den XMFLOAT3 nur einmal pro Frame, sodass der Begrenzungsrahmen eine Methode hat, die mir den Mittelpunkt in einem XMFLOAT3 gibt Andernfalls bleibt es in einem XMVECTOR. Die Klasse wird mit __declspec (align (16)) gelöscht und arbeitet im Debug-Modus. Im Release-Modus stürzt sie jedoch ab, sobald ich sie auf etwas gesetzt habe:

    Box& Box::operator=(const Box& box)
    {
        _center = box._center;
        _extents = box._extents;
        return *this;
    }

Wann immer ich tue:

Box A;

Box B;

A = B;

Es stürzt ab und gibt mir 0xC0000005: Zugriffsverletzung Lesestandort 0x00000000. Es stürzt auch ab, wenn ich es als Zeiger erstelle:

Box* A = new Box();

Dies ist der Konstruktor:

    Box::Box()
    {
        center = XMVectorZero();
        extents = XMVectorSplatOne();
    }

Auch dies funktioniert im Debug-Modus einwandfrei, aber in Release stürzt es ab. Was könnte sich ändern, wenn der Release-Modus ungültigen Code generieren würde? Muss ich etwas anderes tun, als die Box auf 16 Byte auszurichten?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage