ALL,
我正在尝试使用MSVC在C ++中开发程序。开发是在运行Windows 8.1的笔记本电脑上完成的。在其中一次运行中,我看到IDE报告了一堆内存泄漏。
谷歌搜索显示有一个名为Visual Leak Detector(VLD)的工具。所以我抓住它并添加了适当的选项,重新编译并重新运行。
显然应用程序崩溃了。我将VLD添加到项目包含但仍遭遇相同崩溃的所有DLL中。试图调试它,我发现应用程序甚至没有触及应用程序对象的创建。
我做的下一步是将我的代码移到另一台运行Windows 7且安装了相同MSVC 2010的笔记本电脑上。我在那台机器上重新编译了应用程序并运行它。应用程序启动没有任何问题。
下一步我试过 - 在Windows 8.1机器上的二进制可执行文件上运行Dependency Walker。 Dependency Walker发现我错过了几个DLL(API-MS-WIN-CORE-KERNEL32-PRIVATE-L1-1-1.DLL,API-MS-WIN-CORE-PRIVATEPROFILE-L1-1-1.DLL和更多的那种性质)。所以回到谷歌我发现这篇文章:c++/cli DLL fails under Win 8.1,它说我根本不应该使用Dependency Walker。
所以现在我的问题是 - 如何在Windows 8.1机器上使用VLD构建程序以查看我的泄漏位置?
谢谢你,抱歉这么长的帖子。
[编辑]
以下是崩溃时的回溯:
NTDLL.DLL!77440d72()
[下面的框架可能不正确和/或缺失,没有为ntdll.dll加载符号] vld_x86.dll!00d9abf0()
vld_x86.dll!00dae9df()
vld_x86.dll!00daeb4d()
KernelBase.dll!74dd3126()
user32.dll中!75cd7433()
user32.dll中!75cd5ab6()
user32.dll中!75cd58c4()
ntdll.dll中!7744959e()
ntdll.dll中!77449518()
ntdll.dll中!77457685()
ntdll.dll中!7745b390()
ntdll.dll中!7746735f()
vld_x86.dll!00daf9b6()
vld_x86.dll!00dadd99()
MSVCRT.DLL!756ab0f9()
KernelBase.dll!74dd2fd3()
vld_x86.dll!00daf9b6()
vld_x86.dll!00daf9b6()
vld_x86.dll!00dade47()
[/编辑]