Search code examples
windowsmsvcrt

Absurd values to main(int argc, char** argv)


I had on old C++ project starting a Console-application.
With a breakpoint in main(int argc, char** argv) started program.exe -debug.
According to the debugger argc became 32 and the strings in argv had weird random-like values.
When execution continued access violation occurred, since the strings in argv pointed to invalid values.

What can be causing this?


Solution

  • The linker had wrong Entry Point set.
    For a normal console application this should be mainCRTStartup (the debugger shows __tmainCRTStartup).

    Having an invalid entry point caused main to look at what "happended" to be in the stack.
    Posting this since it was not trivial to find.