为什么我不应该省略 SDL_Quit() 或 SDL_DestroyRenderer() 或 Mix_Quit() 等?

Why shouldn't I omit SDL_Quit() or SDL_DestroyRenderer() or Mix_Quit() etc?

我的基本程序运行良好,并且在 Microsoft Windows.

上没有像 SDL_DestroyWindow() 或 Mix_CloseAudio() 这样的其他程序时也能很好地关闭

但如果我仍然不应该省略它们,难道只是因为内存泄漏吗?

或者我是否让某些频道或其他内容处于打开状态,而对音频或视频进行了撤消?

还是别的?

如果您只在您的应用程序中创建单个渲染器(即您只需要在程序完成后删除它)并且可以依靠您的 OS 来清理东西 - 没有泄漏是可能的,因为您的所有当它终止您的进程时,进程的内存将减少 OS。从技术上讲,您可以保留任意数量的内存分配、网络套接字、打开的文件等 - OS 将清理它(尽管不建议这样做)。在某些情况下可能需要一些最终确定 - 例如您的全屏应用程序禁用了屏幕保护程序,您可能需要重新启用它。

在某些 OSes 上,可能需要在退出之前完成排队的渲染,否则图形驱动程序可能会崩溃。这是非常具体的,通常在 PC 上找不到。

SDL_Quit 删除活动的 windows 和渲染器,关闭音频等,这样就足够了。

手动释放内容的主要目标是提高可读性,因为它提供了清晰的生命周期范围 - 在初始化之后一些资源可用,而在释放之后它不再可用 - 并且不需要 SDL 内部知识。