我的一位讲师坚持认为,如果过程没有自行清理,那么直到XP的Windows版本会永久性地泄漏内存。
我觉得很难相信。如果这是真的,多久以前这个解决了,哪个操作系统开创了它?
答案 0 :(得分:1)
它与多久以前'无关。也没有任何操作系统'先锋'它。它与所讨论的操作系统的工作方式有关。现在可能有很多操作系统在处理完成时仍会泄漏未释放的内存(尽管它们很可能是嵌入式系统)。
例如,如果我记得正确的话,有些DOS程序会故意“泄漏”。内存安装中断处理程序。将运行一个程序,分配一些内存并将一些代码复制到它,修改中断表并返回而不释放内存。 DOS不会清理内存,因此中断处理程序仍然驻留在内存中。
我不相信有一个操作系统能够全部启动它。我相信在流程退出后释放未释放的资源只是实施process isolation的操作系统的副作用。
在许多情况下,我认为它甚至不成问题,因此您可能会误解问题并解决问题。或者'未解决的'。例如,在嵌入式系统中,所有进程都经过仔细编写以在退出时释放所有已分配的内存,因此没有理由实现任何跟踪哪个进程拥有哪个内存并且可能执行昂贵的未释放资源检查的内容。清理。在这样的系统中,操作系统在进程完成后无法清理 - 从一开始就不是问题。