我有一个 .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中查看本机内存使用情况(在托管代码的上下文中)?