【发布时间】:2011-12-16 16:14:58
【问题描述】:
我有一个 .NET 应用程序,它与具有以下层的本机 dll 互操作。
a) C++ API GetNames() 返回 wchar_t 实例列表
b) C++/CLI API GetNames2() 代码调用 C++ API,将 wchar 列表编组为 .NET 字符串,返回此 .NET 字符串列表
c) 托管代码 C# 调用互操作层 GetNames2() API 并显示字符串列表
我在互操作层调用 CoTaskMemFree API 来释放原生 wchar 字符串。但是我只是想知道如何查看因缺少 CoTaskMemFree 调用而导致的内存泄漏。所以我注释掉了对 CoTaskMemFree 的调用。在这种情况下,我的理解是,如果我附加 windbg 并运行 !address -summary 命令,在本机端完成的任何分配(尚未释放)都应该显示在 RegionUsageHeap 下,但它似乎没有报告它。任何想法如何在 windbg 中查看本机内存使用情况(在托管代码的上下文中)?
【问题讨论】: