SDL_DestroyWindow() 和 SDL_Quit() 有什么意义?

What's the point of SDL_DestroyWindow() and SDL_Quit()?

我和一个朋友聊天,他说他们只是减慢了程序的关闭时间并且没有用,因为操作系统会自动清理所有内容并且会更快地完成。

由于某些程序可能会崩溃或被杀死,OS 必须确保尽可能释放它。有时这还不够——例如如果您禁用了屏幕保护程序,它会重新启用吗?如果您设置不同分辨率的全屏视频模式,程序关闭后分辨率会重置吗?如果您在游戏手柄上使用隆隆声,它会停止吗?如果会,什么时候停止?有很多问题没有答案,因为所有这些都是 OS 依赖的。

有时您实际上需要在未完成程序的情况下关闭 window。

如果您碰巧损坏了内存堆或踩踏了数据,显式释放更有可能使您的程序崩溃,因此您可能会更早地注意到它。查找著名的“感谢您玩 Wing Commander!”故事。

您几乎无法使用像 valgrind 这样的内存泄漏检测器,因为如果您不进行最终确定,它会报告大量泄漏。

更重要的问题是为什么要避免显式终结。大概是为了节省一些微不足道的时间?通过在您这边进行最终确定,您可以稍微减少其他 OS 部分在流程完成时所做的工作量,所以 - 可能是的,但不太可能被注意到。但是如果其他人会看你的代码(那个人可能是几年后你自己),这很可能会提出问题。