我有一个使用QT 4.6的应用程序。我的程序编译得很好但是在运行时我得到了一个访问冲突,可能会在下面看到。
Exception thrown at 0x00007FF693FC2A6C in Rewynd.exe: 0xC0000005: Access violation writing location 0x0000000000000000.
If there is a handler for this exception, the program may be safely continued.
我做了一些调查,这是在指针非初始化指针被引用时引起的,我可以很容易地修复,但是...在QM处理的WinMain中发生了崩溃。我做了一些调试,崩溃发生在下面的代码中。
extern "C" int APIENTRY WinMain(HINSTANCE, HINSTANCE, LPSTR /*cmdParamarg*/, int /* cmdShow */)
{
int argc;
wchar_t **argvW = CommandLineToArgvW(GetCommandLineW(), &argc);
if (!argvW)
return -1;
char **argv = new char *[argc + 1];
for (int i = 0; i < argc; ++i)
argv[i] = wideToMulti(CP_ACP, argvW[i]);//Crash occurs right here
argv[argc] = Q_NULLPTR;
LocalFree(argvW);
const int exitCode = main(argc, argv);
for (int i = 0; i < argc && argv[i]; ++i)
delete [] argv[i];
delete [] argv;
return exitCode;
}
////// EDIT ///// 发生崩溃是因为argv由于某种原因仍然为空
我无法控制上面的代码,我的程序最初没有崩溃,除此之外,我的主程从未实际执行过,所以我不知道问题是什么。