Vis*_*hal 4 c++ operating-system process
我们知道堆用于为应用程序动态分配内存.如果应用程序终止异常,堆内存如何被清除(从而避免内存泄漏)?
请考虑以下方案:
kill -9 <process_name>在上述情况下,堆管理和清理是否有所不同?[请添加可能感兴趣的更多用例场景]
这个问题出现在我的脑海中,因为我们总是谈论确保代码中没有发生内存泄漏.现在我们如何处理强制关闭应用程序的情况,这可能导致程序退出而不调用内存空闲调用.
如果重复发生此类内存泄漏,操作系统是否可能缺少堆内存?或者操作系统有办法处理它......
假设操作系统是Unix或Windows的典型实现,当应用程序被杀死时,操作系统会释放堆内存,无论它被杀死的方法是什么.
显然,其他操作系统可能无法做到这一点,并且由每个操作系统以有意义的方式解决这个问题 - 我不知道任何操作系统没有"在被杀死的进程后清理",但我确定这样的事情可能存在于这个世界的某个角落.
编辑:可能有其他资源不太容易发布,例如共享内存或多个使用的信号量.但大多数操作系统倾向于通过释放被杀死的应用程序的引用来处理这些问题,并让其他等待任何"等待对象"(互斥,信号量等)的进程"被运行".