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/

相关文章:

c++ - Failed with error 87 : The parameter is incorrect. 如何确定哪个参数不正确?

c++ - 生成给定长度的所有可能的 1 和 0 数组的算法

android - 有人可以向我解释一下 Android 操作系统中 Intents 的基本功能吗?

x86 - 没有硬件支持如何实现机器虚拟化

javascript - Kineticjs 会导致内存泄漏。舞台被摧毁后不释放

c++ - C++ 中 ostream 迭代器的用法

c++ - 获得更好的 iostream 错误消息

memory - 多级页表如何节省内存空间?

go - 多个延迟与延迟匿名函数

java - 在 EXIT_ON_CLOSE JFrame 上调用 windowClosed