是否在退出时进行清理

to clean up on exit or not

本文关键字:退出 是否      更新时间:2023-10-16

我知道清理是一件好事。我也了解操作系统的内部结构,所以如果我知道我的进程正在终止,那么它的内存将被释放。但我喜欢提出不同的观点。我正在排队,在退出时释放内存是一个相当糟糕的主意。

例如,我可能已经分配了当前已换出的大内存,如果我在退出时释放它,则需要将其带到RAM,然后释放它。如果我不这样做,在退出时,它将简单地在一个表中标记为免费。

总的来说,操作系统已经发生了很大变化(基础知识保持不变(,我知道这个问题可以想到A_VERY_PLATFORM_DEPENDENT,但从今天的应用程序开发人员的角度来看,他要么被困在某个框架中(?(,要么是冒失鬼的编码员,他正在研究原始技术作为 COM,被严重依赖,我会称之为VERY_CONTROLLED_ENVIRONMENT。

对于TL;DR:在现代操作系统上,我认为我不应该在退出时执行清理。如果你认为我错了,为什么?

PS:我不是在谈论RTOS,我的意思是受控环境意味着Windows,Linux,我从来没有提到设备驱动程序开发或操作系统开发。

已换出的内存块只有在您访问它们时才会被引入。释放块是一个"簿记"事件,不需要内存访问。跳过对释放内存的调用不会获得任何好处。

始终在退出时手动释放资源的原因要充分得多:它允许您使用工具进行内存分析,因为您可以区分意外泄漏和故意泄漏。仅此原因就足以建议不要跳过内存清理。