Visual Studio调试器显示结构的地址而不是结构本身?

我最近在Visual Studio 2008中遇到了一些非常奇怪的行为,但尚未能够解释它。 我曾尝试在使用相同数据类型的非常小的应用程序中重新创建以下行为,但不幸的是无法重新创建它。 不管它是什么,它似乎都是我大型应用程序中的其他东西的人造物。

这个问题似乎与将价值结构传递给函数有关。 请不要以参考/价值来启动关于传递结构的讨论,已经有足够的了。 按价值传递是允许的,并且是在这里使用的。

简而言之,问题是调试器显示的结构成员的错误值恰好是该函数的第一个输入。 以下屏幕截图显示了观察窗口,显示结构的不同表示的值。 请注意,“InternalId”是该函数的输入,Visual Studio将为其第一个成员“local_id”显示值1520176(十六进制中的0x00173230)。 但是,下面的printf语句打印出十进制值'1028'(这是我期望local_id包含的值)。

在这里输入图像描述

在截图中注意到,我已经创建了一个指向输入结构“pInternalId”的指针,然后通过取消引用指针来创建结构“InternalId2”的另一个副本。 调试器正确显示这些变量。

请注意“pInternalId”的值,它是0x00173230,这当然是InternalId的地址。 这正好是调试器为InternalId.local_id的内容显示的内容! WAT?

有没有人遇到类似的东西? 我的程序似乎运行正常,但是这肯定会让我在几个小时内疯狂追赶。

我会看看是否可以获得更新版本的Visual Studio并尝试重新创建。

链接地址: http://www.djcxy.com/p/95367.html

上一篇: Visual Studio debugger displays address of struct instead of struct itself?

下一篇: Visual Studio debugger doesn't recognize any usings