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++ - 打印未初始化的引用给出 1. 为什么?

c++ - const 属性的复制构造函数问题

operating-system - 操作系统如何处理上下文切换?

c - Bochs (2.4.6)/GRUB (0.97) "Error 13 Invalid or unsupported executable format"在 C 函数调用中传递 char 字符串时

c# - 指定的可执行文件不是此操作系统平台的有效应用程序。 Python绘图仪

three.js - 清理 Threejs WebGl 上下文

python - Try-finally 装饰器清理 python 对象

C++ : Help understanding what this line of code is trying to do

c++ - 将项目变成静态库

dart - 可以删除对象后取消内部流订阅的模式?