QT 4.6主要之前崩溃

时间:2016-08-08 00:54:09

标签: c++ qt exception exception-handling access-violation

我有一个使用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由于某种原因仍然为空

Completely lost

我无法控制上面的代码,我的程序最初没有崩溃,除此之外,我的主程从未实际执行过,所以我不知道问题是什么。

0 个答案:

没有答案