在许多书籍和教程中,我都听说过内存管理的做法很受压力,并感到如果使用完内存后不释放内存,将会发生一些神秘而可怕的事情。
我无法代表其他系统(尽管对我而言,可以假设它们采用了类似的做法是合理的),但是至少在Windows上,内核可以保证清除由以下系统使用的大部分资源(少数情况除外)程序终止后的程序。其中包括堆内存等。
我了解为什么您要在使用完文件后关闭文件以使文件可供用户使用,或者为什么要断开连接到服务器的套接字以节省带宽,但是这样做似乎很愚蠢。必须微管理程序使用的所有内存。
现在,我同意这个问题是广泛的,因为您应该如何处理内存取决于您需要多少内存以及何时需要,因此我将把这个问题的范围缩小到这个范围:如果我需要使用在程序整个生命周期中的内存,在程序终止之前是否真的有必要释放它?
编辑:建议作为重复的问题是特定于Unix家族的操作系统。它的最高答案甚至指定了特定于Linux的工具(例如Valgrind)。该问题旨在涵盖大多数“常规”非嵌入式操作系统,以及为什么在程序的整个生命周期内释放所需的内存是一个好习惯,或不是一个好习惯。