在x64中传递struct作为参数时,监视窗口中的异常值

时间:2016-08-13 09:13:56

标签: c++ visual-studio

我对C ++很陌生,遇到了一些我无法解释或不理解的事情。

我有一个简单的程序,它定义一个结构,然后创建一个该类型的变量,并将其作为参数传递给函数。

struct Vector3
{
    float X, Y Z;
};

static void test(Vector3 x)
{
}

int main()
{
    Vector3 x = { 100.0f, 100.0f, 0.0f };
    test(x);
    return 0;
}

在x86配置中运行时,检查测试函数中的x参数,看起来绝对像我期望的那样。 X = 100.0f,Y = 100.0f,Z = 0.0f。

但是如果我在调试器中检查参数时将其更改为x64,则得到值X = 4.23084696e-37,Y = 2.648e-43#DEN,Z = -107374176。

如果我改变测试以取代指针,那么这些值会再次变得合理。

为什么它们只有在x64中构建和运行时才有所不同?

以上说明了我遇到的问题。在我的实际代码中,我将位置向量传递给绘制精灵函数,该函数正在计算用于在open gl中绘制精灵的变换矩阵。但是,根据我传递参数的方式,似乎会导致计算不同的转换。上述情况会导致此问题还是其他问题?

0 个答案:

没有答案