在主进程完成执行之前释放程序资源似乎是很标准的做法。但是,当我学习OpenGL / Vulkan时,我发现本教程中似乎不必要的一件事是专用于资源清理的代码量。在程序退出之前,清理自己的资源是否有任何切实的好处?进程完成后,现代操作系统难道不是已经做到了吗?
这不是GL / Vulkan问题,它更笼统,适用于开发人员管理自己的内存的任何语言。
答案 0 :(得分:5)
编写优秀代码的一部分是编写可用于其他目的的代码,这些代码形成有用的工具的集合。如果您的代码在完成后仍无法自行清除,那么将其用作其他内容的一部分将变得更加困难。在无法自动清除的代码中查找内存泄漏也更加困难。
当然,如果您的项目是一次性的,并且在学习如何彻底关闭它方面没有特殊的教育目的,那么可以将其省略。
答案 1 :(得分:3)
取决于资源,“清除”是什么意思,您实际在做什么以及其他事项。这里有几点值得考虑:
“我在做什么?”假设您编写了模块化代码。然后,您希望拥有所有这些析构函数。毕竟,有些人可能想在其他上下文中使用您的代码,一旦您处理完代码,该过程就不会关闭。
“资源和清除”大多数现代操作系统的确确实会自动回收内存(但是否保证每个OS都能做到这一点?)。但是,如果您实际上正在进行一些联网该怎么办?如果要向服务器发送“再见”消息以收集统计信息怎么办?也许您想要清理。而且从一开始就编写它会比较容易,而不是以后再添加它。
“ OS独立代码”您真的要编写OS依赖代码吗?操作系统总是回收任何资源真的是一个标准吗?
“错误,错误,错误”操作系统确实存在错误。还有很多。当然,以防弹的方式编写代码是您的责任,这是有争议的。仍然值得考虑。