我一直在尝试使用 XMVECTOR 作为边界框的类成员,因为我做了很多计算,但我每帧只使用一次 XMFLOAT3,所以边界框有一种方法可以让我在 XMFLOAT3 中居中,否则它会停留在 XMVECTOR 中;该类使用 __declspec(align(16)) 进行删除,并在调试模式下工作。但是在发布模式下,它会在我将其设置为某些东西的瞬间崩溃:
Box& Box::operator=(const Box& box)
{
_center = box._center;
_extents = box._extents;
return *this;
}
每当我这样做时:
Box A;
Box B;
A = B;
它崩溃了,给了我 0xC0000005:访问冲突读取位置 0x00000000。当我将它创建为指针时它也会崩溃:
Box* A = new Box();
这是构造函数:
Box::Box()
{
center = XMVectorZero();
extents = XMVectorSplatOne();
}
同样,这在 Debug 模式下运行良好,但在 Release 中它崩溃了。Release 模式会发生什么变化而生成无效代码?除了将框对齐到 16 个字节之外,我还需要做其他事情吗?