Memory management 操作系统自动运行多久了;“释放”;a进程';记忆?

Memory management 操作系统自动运行多久了;“释放”;a进程';记忆?,memory-management,memory-leaks,operating-system,Memory Management,Memory Leaks,Operating System,我的一位讲师坚持认为,如果进程本身没有清理干净,那么最晚到XP的windows版本将永久性地泄漏内存 我觉得这很难相信。如果这是真的,那么这个问题在多久前就解决了,哪些操作系统是它的先驱 它与“多久以前”无关,也没有任何操作系统的“先驱”能做到这一点。这与所讨论的操作系统的工作方式有关。现在可能有很多操作系统仍然会在进程完成时泄漏未释放的内存(尽管它们可能是嵌入式系统) 例如,如果我没有记错的话,一些DOS程序会故意“泄漏”内存来安装中断处理程序。程序将被运行,分配一些内存并向其复制一些代码,修

我的一位讲师坚持认为,如果进程本身没有清理干净,那么最晚到XP的windows版本将永久性地泄漏内存


我觉得这很难相信。如果这是真的,那么这个问题在多久前就解决了,哪些操作系统是它的先驱

它与“多久以前”无关,也没有任何操作系统的“先驱”能做到这一点。这与所讨论的操作系统的工作方式有关。现在可能有很多操作系统仍然会在进程完成时泄漏未释放的内存(尽管它们可能是嵌入式系统)

例如,如果我没有记错的话,一些DOS程序会故意“泄漏”内存来安装中断处理程序。程序将被运行,分配一些内存并向其复制一些代码,修改中断表并返回,而不释放内存。DOS不会清理内存,因此中断处理程序仍驻留在内存中

我不相信有一个操作系统可以“启动一切”。我相信在进程退出后释放未释放的资源只是操作系统实现的一个副作用


我不认为这在很多情况下都是一个问题,所以你把这个问题称为“已解决”或“未解决”有点误导。例如,在一个嵌入式系统上,所有进程都被小心地写入,以便在退出时释放所有分配的内存,因此没有理由实现任何跟踪哪个进程拥有哪个内存的操作,并执行可能代价高昂的未释放资源检查和清理。在这样的系统上,在进程结束后不清理的操作系统是完全有效的-这不是一个问题。

查看:即使W95在终止时也清理了进程资源(假设它设法不首先进行BSOD:)。