1

我有一个 32 位 Visual Studio 8.0 C++ Windows DLL(非 .NET),它占用的内存似乎比我预期的要多。我想确切地确定内存的去向,而不仅仅是使用的总内存的一个数字(对任务管理器或资源监视器的内存使用值不感兴趣)。回到 16 位时代,HeapWalker 非常有用,您甚至可以选择一个 BITMAP 句柄并查看它的图形内容。我试图记住如何阅读 .MAP 文件并将各个部分相加,但文档很少,我不确定这种技术有多准确。有人有什么建议吗?

4

1 回答 1

2

如果需要查找 DLL 各个部分的大小,可以使用 dumpbin.exe。它是用于检查 DLL 和可执行文件的命令行工具。确保在尝试运行之前运行 vcvars32.bat。

要查看 DLL 的实际内存消耗,我建议从 umdh.exe 开始。它作为来自 Microsoft 的 windbg 的一部分提供。只要您使用 pdb 构建文件,它将能够解析应用程序中的符号。然后,您可以拍摄一些内存快照以查找泄漏。您还可以对所有分配进行完整转储,以查看分配了内存的位置以及分配了多少内存。

于 2009-03-30T19:44:23.590 回答