我可能被误导了,但据我所知,操作系统会在程序退出或崩溃后清理内存。
如果是这样,在程序结束时释放内存有多大用处?我知道,如果程序正在运行并且忽略释放,内存可能会变得“满”,但是如果程序已经要结束并且操作系统释放了程序使用的所有内存,那么手动释放该内存有什么意义呢?
引用自C 中的内存释放问题 http://programming.oreilly.com/2013/06/memory-deallocation-issues-in-c.html:
操作系统负责维护应用程序的资源,包括其内存。当应用程序终止时,操作系统有责任为其他应用程序重新分配该内存。已终止应用程序的内存状态(无论是否损坏)都不是问题。事实上,应用程序终止的原因之一是其内存损坏。如果程序异常终止,则可能无法进行清理。
话虽如此,当程序正常终止时可能还有其他原因需要释放内存:
- 尽责的程序员可能希望释放内存作为质量问题。即使应用程序正在终止,在不再需要内存后释放内存始终是一个好习惯。
- 如果您使用工具来检测内存泄漏或类似问题,则释放内存将清理此类工具的输出。
- 在一些不太复杂的操作系统中,操作系统可能不会自动回收内存,并且在终止之前回收内存可能是程序的责任。
- 此外,应用程序的更高版本可以在程序末尾添加代码。如果之前的内存没有被释放,可能会出现问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)