在Windows NT及更高版本中,我假设当进程过期时,无论是因为它自行终止还是被强制终止,操作系统都会自动回收进程使用的所有内存。有什么情况不是这样吗?有没有理由明确释放用户模式应用程序使用的所有内存?
答案 0 :(得分:3)
每当进程结束时,映射到它的所有内存页都将返回到可用状态。正如你所说,这可以称为“回收记忆”。但是,它不会执行诸如运行析构函数之类的操作(如果您使用的是C ++)。
我高度建议释放所有内存,而不是从资源角度,而是从开发角度。尝试释放内存可以鼓励您考虑内存的生命周期,并帮助您确保实际清理。
这在短期内并不重要,但我已经处理了无数的软件程序,这些软件程序假设他们拥有这个过程,因此不必自行清理。但是,有很多理由想要在沙箱中运行程序。如果不必每次都重新创建过程,许多随机测试场景可以更快地运行。我还有几个程序认为它们是独立的,只是想要集成到更大的软件包中。在那些时候,我们发现了内存管理所采用的所有快捷方式。