2011-10-25 83 views
5

我正在基准测试/优化一个缓慢的C++应用程序,并采取了一些stackshots我发现我的应用程序的版本构建使用调试堆,因为一些堆栈发现踪迹将表明:Visual Studio 2010上的VC++:使用调试堆发布版本

ntdll.dll!string "Enabling heap debug options\n"() + 0x11056 bytes 

这是在Windows 7上运行我看到在完全相同的环境,这个问题两个三个其他投诉网上一个64位应用程序,但没有任何反应。

有没有人有线索为什么Windows或Visual Studio会使用调试堆发布构建C++项目?

+0

+1使用堆栈。 –

回答

6

The debug heap is used when a program is run under debugger(配置文件经常表现为调试器)。为了绕过它,程序应该在没有调试的情况下启动,然后调试器应该连接到正在运行的进程。

+0

谢谢。我不知道我从来不知道这一点,虽然我承认我没有看到强制发布应用程序使用调试堆的好处 - 不是尽可能模仿真实世界的发布点情景!? –

+0

@Mahmoud Al-Qudsi:这件事实际上并不那么出名,我也很惊讶地知道它。那么,调试堆有助于调试和调试,便于调试,所以我想他们决定将它组合起来。此外,它不是由Visual Studio或类似的东西完成的 - 它是由Windows完成的。 – sharptooth

相关问题