gpt4 book ai didi

c++ - 是否需要调用 CloseHandle?

转载 作者:可可西里 更新时间:2023-11-01 13:51:08 26 4
gpt4 key购买 nike

我正在阅读 http://support.microsoft.com/kb/243953他们在其中解释了如何将应用程序限制为单个实例。互斥锁在构建和销毁时创建,它们调用 CloseHandle

这让我开始思考,即使应用程序将关闭,是否也严格要求调用 CloseHandle?在许多 freebsd c 程序中,经常使用不释放 malloced 内存的做法,因为操作系统会在销毁时更快地清理它。即使进程已关闭,也无法调用 CloseHandle 占用操作系统中的资源?

最佳答案

Could not calling CloseHandle tie up resources in the OS even if the process has shut down?

没有。当一个进程终止时,操作系统会隐式释放它一直保留的所有句柄,就像它处理分配的内存一样。

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

从开发人员的角度来看,缺点是无法将分配的资源自动划分为“故意泄漏”和“由于错误而泄漏”的集合。当(可能不是如果)在某个时候您意识到您的应用程序正在泄漏资源,这实际上是不应该的,像这样的打开句柄会让真正的问题隐藏在错误的线索中,从而让您的生活变得更加困难。

关于c++ - 是否需要调用 CloseHandle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21428147/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com