调试/发布中的控制台程序

l3u*_*fly 0 c++ winapi console-application

我使用C++中的Microsoft Visual Studio 2012 Ultimate IDE构建了非常简单的win32控制台程序;

这是代码:

int _tmain(int argc, _TCHAR* argv[])
{
    int i = 0;
    i++;
    return = 0
}
Run Code Online (Sandbox Code Playgroud)

通过代码逐行调试,我注意到了这一点:

在Debug x64模式下argc = 1,argv[0] = the program's path

在Release x64模式下argc = some random large number,argv[0] = some random path or simply 0x00000001

为什么是这样?

任何帮助,将不胜感激.

Ste*_*eve 5

发布模式的默认构建选项不会在发布模式下为您提供合理的调试.编译器在发布模式下使用的优化意味着编译后的代码与您编写的代码看起来完全不同(但在逻辑上是相同的).

已经有了一个很好的答案,请参阅如何在发布模式下调试?