Visual studio的记忆window只包含问号

Visual studio's memory window only contains question marks

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

我在使用以下代码时遇到问题:

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

因为我认为内存出了问题,所以我决定查看内存 window(菜单 "Debug"、"Windows"、"Memory"、"Memory 1"),这里输入了pvarTemp的内存地址,但是只看到了一些问号

崩溃转储本身只是一个小的崩溃转储,在此 PYKDtargetSystem().desc 结果(在 Windgb 中):

0:049> !py
Python 2.7.10 (default, May 23 2015, 09:40:32) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> print targetSystem().desc
User mini dump: C:\Temp_Folder\CRASH.DMP

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

  1. 出现问号的原因也是应用程序崩溃的原因。
  2. 因为我正在处理一个小的崩溃转储,转储中提到的内存地址可能不可信,所以问号是正常行为。

两者中哪一个是正确的?

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

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