c++ - 是否在退出时清理

标签 c++ operating-system resource-cleanup application-layer

<分区>

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

例如我可能已经分配了当前已换出的大内存,如果我在退出时释放它,则需要将它带到 RAM,然后释放它。如果我不这样做,退出时它只会在一张表中标记为空闲。

总的来说,操作系统已经改变了很多(基本保持不变),我理解这个问题可以被认为是 A_VERY_PLATFORM_DEPENDENT,但是从今天的应用程序开发人员的角度来看,他要么陷入(?)某些框架,要么冒失鬼开发 COM 等原始技术的编码器非常依赖,我称之为 VERY_CONTROLLED_ENVIRONMENT。

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

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

最佳答案

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

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

关于c++ - 是否在退出时清理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27347081/

相关文章:

go - golang执行命令出错

java - ThreadPoolExecutor 在线程死亡时进行清理

c++ - 以下两种返回 C++ 对象的方法是否相同?

python - 从 Assembly 执行 python 脚本

.net - .NET 在 32 位或 64 位系统中有什么区别?

ios - 如何识别 App 何时被卸载

c++ - 如何从 Qt 打开文件资源管理器?

c++ - 结构的“不完整类型”

c++ - 在循环中使用 stringstream 从几个字符串中提取数字