Visual Studio的内存窗口仅包含问号

时间:2019-06-26 14:12:45

标签: c++ visual-studio visual-studio-debugging

我正在处理标准C ++程序的故障转储。

我对以下代码有疑问:

_variant_t* pvarTemp;
pvarTemp = <static_cast><_variant_t*> (pointer_array->GetAt(i));
if (!pvarTemp) continue;
pvarTemp->Clear();

由于我认为内存有问题,因此我决定查看一下内存窗口(菜单“ Debug”,“ Windows”,“ Memory”,“ Memory 1”),在其中输入了{ {1}},但我只看到一些问号。

崩溃转储本身只是一个小的崩溃转储,据此pvarTemp的{​​{1}}结果(在Windgb中):

PYKD

我的问题是:问号的原因是什么?

  1. 带有问号的原因也是应用程序崩溃的原因。
  2. 当我使用小型崩溃转储时,转储中提到的内存地址可能不可信,因此问号是正常行为。

两者中的哪一个是正确的?

1 个答案:

答案 0 :(得分:2)

您正在进行事后调试。通常,故障转储不会捕获进程正在使用的所有内存。如果您尝试检查转储中未包含的内存,则会看到问号。

如果您正在进行实时调试,问号表示该地址未映射到进程空间。