C++ SDL删除GL上下文内存安全

C++ SDL删除GL上下文内存安全,c++,opengl,sdl,C++,Opengl,Sdl,如果我通过SDL获得OpenGL上下文 SDL_GLContext* SetupOpenGL(SDL_Window *wnd) { SDL_GLContext *context; SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 4); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2); SDL_GL_SetAttribute(SDL_GL_DOUBLEB

如果我通过SDL获得OpenGL上下文

SDL_GLContext* SetupOpenGL(SDL_Window *wnd) {
    SDL_GLContext *context;

    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 4);
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);

    SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
    SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);

    assert(wnd != 0);
    *context = SDL_GL_CreateContext(wnd);

    return context;
}

在退出时使用SDL_GL_Deletecontext释放SDL_GLContext足够了吗,还是我需要做其他事情

实际上,如果你的程序即将终止,那么清理你身后的东西主要是一种姿态。事实上,大多数现代操作系统开发人员现在公开批评进行这种出口清理的程序。最糟糕的情况是:该程序确实分配了千兆字节的数据,这些数据从系统RAM中交换出来并处于休眠状态。如果程序刚刚终止,内存分配表中的条目将被标记为空闲,仅此而已。但是如果程序清理完毕,所有这些东西都必须重新加载到RAM中……为了什么,只是为了立即终止。如果程序不打算终止,而是在分配新对象的过程中终止,正确地释放对象是很重要的。然后,您需要进行清理,以免因内存泄漏而浪费内存和地址空间。