是否在退出时进行清理
to clean up on exit or not
我知道清理是一件好事。我也了解操作系统的内部结构,所以如果我知道我的进程正在终止,那么它的内存将被释放。但我喜欢提出不同的观点。我正在排队,在退出时释放内存是一个相当糟糕的主意。
例如,我可能已经分配了当前已换出的大内存,如果我在退出时释放它,则需要将其带到RAM,然后释放它。如果我不这样做,在退出时,它将简单地在一个表中标记为免费。
总的来说,操作系统已经发生了很大变化(基础知识保持不变(,我知道这个问题可以想到A_VERY_PLATFORM_DEPENDENT,但从今天的应用程序开发人员的角度来看,他要么被困在某个框架中(?(,要么是冒失鬼的编码员,他正在研究原始技术作为 COM,被严重依赖,我会称之为VERY_CONTROLLED_ENVIRONMENT。
对于TL;DR
:在现代操作系统上,我认为我不应该在退出时执行清理。如果你认为我错了,为什么?
PS:我不是在谈论RTOS,我的意思是受控环境意味着Windows,Linux,我从来没有提到设备驱动程序开发或操作系统开发。
已换出的内存块只有在您访问它们时才会被引入。释放块是一个"簿记"事件,不需要内存访问。跳过对释放内存的调用不会获得任何好处。
始终在退出时手动释放资源的原因要充分得多:它允许您使用工具进行内存分析,因为您可以区分意外泄漏和故意泄漏。仅此原因就足以建议不要跳过内存清理。
相关文章:
- 在线程退出之前,线程分配的内存块是否与线程本身具有相同的相关性?
- 使用输入重载时,是否可以像这样退出 while 循环
- 如何检测是否有任何应用程序进入全屏或退出全屏?
- 在无效函数中使用退出来纠正错误是否是一种好的做法
- 退出()是否刷新并关闭“流”对象
- 确定线程是否已退出
- 函数退出时是否需要清除函数内部本地声明'map' STL?
- 你怎么知道主楼是否已经退出
- 监视C++OpenFrameworks应用程序是否冻结或内存泄漏,然后强制退出并重新启动
- 是否可以进行编译,以使错误的std::vector访问调用退出程序,并显示有用的错误消息
- 是否在退出时进行清理
- 我是否应该确保在退出程序之前销毁 SDL 2.0 对象(渲染器、窗口、纹理等)
- 当拥有的对象退出范围时,在类实例成员上使用shared_ptr是否会正确清理
- 如果我们不删除内存并且应用程序已退出,是否存在内存泄漏
- 是否可以阻止CGDB在退出时清除屏幕
- GetExitCodeProcess是否有可能将退出代码设置为错误的值?
- 进程是否在退出时自动清理pthreads占用的资源?
- 在c++中是否有一种数据结构可以在达到指定的大小阈值时自动退出
- 我的win32程序是否有办法告诉它启动的子进程已经崩溃(而不仅仅是退出)?
- 是否保证标准输出在退出前自动刷新?它是如何工作的