是否需要调用CloseHandle?

我正在阅读http://support.microsoft.com/kb/243953 ,他们解释了如何将应用程序限制为单个实例。 一个互斥体是在施工和销毁时创build的,他们称之为CloseHandle

这让我想,即使应用程序将closures,调用CloseHandle严格要求? 在很多freebsd c程序中,经常使用不释放malloced内存的做法,因为操作系统会在破坏后更快地清除它。 即使进程已closures,无法调用CloseHandle绑定操作系统中的资源?

即使进程已关闭,无法调用CloseHandle绑定操作系统中的资源?

不。当进程终止时,操作系统会隐式释放它一直存在的句柄,就像分配的内存一样。

从系统的角度来看,不关闭句柄的缺点与不释放内存的缺点一样:只要进程仍在运行,就可以防止操作系统释放逻辑上未使用的资源。

从开发者的角度来看,缺点是没有办法自动将分配的资源划分成“有意泄露”和“由于漏洞而泄露”的集合。 当(可能不是如果)在某个时候,你意识到你的应用程序泄露了资源,这实际上不应该是这样,像这些打开的句柄会让你的生活更加困难,帮助真正的问题隐藏在虚假的线索之中。