c++ - 基本SDL2代码,在调用SDL_Quit()时为 “Stop working”

标签 c++ error-handling

所以我最近才接触到C++的SDL2,我做了这个非常简单的代码:

int main(int argc, char** argv)
{

SDL_Event *event;
bool done = false;

if(SDL_Init(SDL_INIT_VIDEO) != 0)
{
    std::cerr << "Problèmes pour initialiser la SDL : " << SDL_GetError() << std::endl;
    return 1;
}
SDL_Window *window = 0;
window = SDL_CreateWindow("Mopion", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, WIDTH, HEIGHT, SDL_WINDOW_SHOWN);

if(window == 0)
{
    done = true;
}

while(!done)
{
    while(SDL_PollEvent(event))
    {
        switch(event->type)
        {
        case SDL_QUIT:
            done = true;
            break;
        case SDL_KEYUP:
            if(event->key.keysym.sym == SDLK_q)
            {
                done = true;
            }
            break;
        default:
            break;
        }
    }
}
SDL_DestroyWindow(window);
SDL_Quit();

return 0;
}

虽然该代码起初执行得很好,但是当我按下“Q”键时,该窗口关闭,但出现了Windows错误窗口,提示“我的程序停止工作”。这不是很方便。

使用调试器,我发现在调用SDL_Quit()之前一切都很好。

任何人都知道为什么会这样吗?
非常感谢 !

最佳答案

您没有为SDL_Event保留内存,并且很可能破坏了堆栈。将其声明为自动,然后按地址传递给SDL_PollEvent()。

关于c++ - 基本SDL2代码,在调用SDL_Quit()时为 “Stop working”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24032226/

相关文章:

C++ 编写二进制转储和从转储写入二进制

c++ - 为什么静态成员函数定义不能有关键字 'static' ?

c++ - 如何在类构造函数中使用 C++11 随机引擎和均匀分布?

c - 基本 C 程序已停止工作 : just in time debugger

wordpress - WordPress “white screen of death”独特的问题,以前从未见过

C 关于异常处理的建议

c++ - 激活中断的麦克风特定信号

c++ - nrf51882a 入门

php - php error_log怪异

javascript - 发送明确的错误消息作为响应