2013-05-05 98 views
2

我尝试了一些在线查找的建议,但它对我无效。我使用Visual Studio 2010。基本上我输入loc(kcs(1,4))(这是我的变量),我得到了157510036.其十六进制是9636994.因此,然后我键入(INTEGER *)0x9636994,但在监视窗口下的“值“列中写明”未定义的变量INTEGER“。我用小写整数或实数和相同的答案。任何建议?Visual Studio 2010:如何查看内存十六进制位置

+0

ops更正感谢 – Lupocci 2013-05-05 18:17:04

回答

1

我输入了(INTEGER *)0x9636994,但在“值”列下的监视窗口中显示“未定义的变量INTEGER”。

根据Restrictions on Native C++ Expressions

类型转换

如果你投的类型,类型必须是已知的调试器。你的程序中必须有另一种类型的对象。 不支持使用typedef语句创建的类型

尝试使用基础类型。因此,例如,如果INTEGER实际上是int,那么您会尝试观看(int *)0x9636994

这也假设该变量固定为0x9636994(基本上,你并不是试图引用栈上的瞬态)。

+0

该变量是fortran模块中的一个可分配变量,它位于固定内存位置。 Loc在整个程序中始终保持相同的价值。我尝试(int *)0x9636994建议,但它给“值”列下的“语法错误”。任何其他想法? – Lupocci 2013-05-05 18:19:56

+0

@Alberto你可以尝试'*(int *)0x9636994'。但除此之外,我能想到的唯一的其他事情就是*(如果)转换为类型的约束,调试器必须知道该类型。*但是在应用程序中没有'int'似乎不太可能。 – 2013-05-07 07:56:56

+0

对此有何更新? (int *)或(int *)不起作用 – Lupocci 2014-01-16 22:41:47