Używanie XMVECTOR z DirectXMath jako członka klasy powoduje awarię tylko w trybie zwolnienia?
Próbowałem użyć XMVECTOR jako członka klasy dla obwiedni, ponieważ wykonuję wiele obliczeń, ale używam XMFLOAT3 tylko raz na ramkę, więc obwiednia ma metodę, która daje mi jej środek w XMFLOAT3 , w przeciwnym razie pozostaje w XMVECTOR; klasa jest usuwana za pomocą __declspec (align (16)) i działa w trybie debugowania. Jednak w trybie Release zawiesza się w momencie, gdy ustawię ją na coś:
Box& Box::operator=(const Box& box)
{
_center = box._center;
_extents = box._extents;
return *this;
}
Ilekroć to robię:
Box A;
Box B;
A = B;
Awaria, dając mi 0xC0000005: lokalizacja odczytu naruszenia zasad dostępu 0x00000000. Również ulega awarii, gdy tworzę go jako wskaźnik:
Box* A = new Box();
To jest konstruktor:
Box::Box()
{
center = XMVectorZero();
extents = XMVectorSplatOne();
}
Ponownie, działa to poprawnie w trybie debugowania, ale w wersji ulega awarii. Co może zmienić tryb Release, który generowałby nieprawidłowy kod? Czy muszę zrobić coś innego, poza wyrównaniem pola do 16 bajtów?