0

C++ で Microsoft Visual Studio 2012 Ultimate IDE を使用して、非常に単純な win32 コンソール プログラムを作成しました。

これはコードです:

int _tmain(int argc, _TCHAR* argv[])
{
    int i = 0;
    i++;
    return = 0
}

コードを 1 行ずつデバッグしていると、次のことに気付きました。

デバッグ x64 モードではargc = 1argv[0] = the program's path

リリース x64 モードではargc = some random large numberargv[0] = some random path or simply 0x00000001

どうしてこれなの?

どんな助けでも大歓迎です。

4

1 に答える 1

5

リリース モードのデフォルトのビルド オプションでは、リリース モードで適切なデバッグを行うことはできません。コンパイラがリリース モードで使用する最適化は、コンパイルされたコードが、記述したものとはまったく異なる (ただし、論理的には同じである) 可能性があることを意味します。

これにはすでに良い答えがあります。リリースモードでデバッグする方法を参照してください。

于 2013-03-28T13:22:45.270 に答える