Rik*_*aaf 6 c memory operating-system
我可能会被误导,但据我所知,操作系统会在程序退出或崩溃后清理内存.
如果是这样,在程序结束时释放内存有多大用处?我知道如果一个程序正在运行并且忽略了解除分配,那么内存可能会变得"满",但如果一个程序已经结束并且操作系统解除了程序使用的所有内存,那么手动解除分配该内存的意义何在?
引用C 中的内存释放问题:
\n\n\n\n操作系统负责维护应用程序的资源,包括其内存。当应用程序终止时,操作系统\xe2\x80\x99有责任为其他应用程序重新分配该内存。已终止的应用程序\xe2\x80\x99s 内存的状态(损坏或未损坏)都不是问题。事实上,应用程序终止的原因之一是其内存损坏。如果程序异常终止,则可能无法进行清理。
\n\n话虽如此,当程序正常终止时可能还有其他原因需要释放内存:
\n\n\n
\n- 尽责的程序员可能希望释放内存作为质量问题。即使应用程序正在终止,在不再需要内存后释放内存始终是一个好习惯。
\n- 如果您使用工具来检测内存泄漏或类似问题,则释放内存将清理此类工具的输出。
\n- 在一些不太复杂的操作系统中,操作系统可能不会自动回收内存,并且在终止之前回收内存可能是程序\xe2\x80\x99的责任。
\n- 此外,应用程序的更高版本可以在程序末尾添加代码。如果之前的内存没有被释放,可能会出现问题。
\n