运行 可执行文件和在 Visual Studio 中调试它之间有区别吗?

is there a difference between running an executable and debugging it in Visual Studio?

我正在 Windows 中编写一段代码,它使用 winapi 消息框和一些用于 RS232 应用程序的动态内存

当我 运行 在调试模式下(使用 VS2010 和步进调试)同一个应用程序创建不同的错误并且 运行 将它作为命令中的可执行文件时,我看到了一个奇怪的情况-行

在第一种情况下,使用 winapi 消息框和程序正确弹出错误 returns/ends。第二种情况,它会造成 运行 次错误以及内存泄漏

这两种运行模式有区别吗?以及如何捕获 winapi 运行-时间错误?

提前致谢!

是的! 运行 直接从正在使用调试堆的调试器生成的程序。假设它不是在调试模式下编译的。 当调试器加载到进程地址 space 时,内存布局会发生变化。所以可能会发生一些奇怪的事情。

如果您有这种奇怪的效果,有时最好将调试器附加到 运行 进程。