gpt4 book ai didi

windows - 当一个进程与其他进程结合运行时,观察到句柄泄漏

转载 作者:可可西里 更新时间:2023-11-01 11:22:05 27 4
gpt4 key购买 nike

我的一个可执行文件在单独运行时打开了大约 330 个句柄。当它与另一个特定进程结合运行时,它会泄漏许多句柄。

我使用了 sysinternals 的“句柄”实用程序来检查在这两种情况下打开的所有句柄是什么。当此进程与其他特定进程结合运行时,它具有以下句柄条目的额外内容。

  578: Process       
57C: Thread
580: Process
584: Thread
588: Process
58C: Thread
590: Event
598: Process
59C: Thread
5A0: Process
5A4: Thread
5A8: Process
5AC: Thread
5B0: Process
5B4: Thread
5B8: Event

这样它就为进程、线程、事件打开了 400 个额外的句柄。最终,这种泄漏会导致应用程序崩溃。

我是 Windows 编程的新手,请原谅我问的是非常基本的问题。我将非常感谢在这方面的任何帮助/建议。

  1. 句柄“Process”表示或表示什么,在什么情况下将打开它?
  2. 句柄'Thread' 表示或表示什么,在什么情况下将打开它?
  3. 为什么这两个进程的组合单独导致句柄泄漏? (这些过程大多是独立的)
  4. 我可以尝试了解这种行为吗?
  5. 对于如何调试这种情况有什么建议吗?
  6. 有什么有用的工具可以进一步理解?

最佳答案

这是使用 CreateProcess() 函数时的一个非常经典的错误。最后一个参数 lpProcessInformation 返回一个 PROCESS_INFORMATION。如果您对返回的 hProcess 和 hThread 成员不感兴趣,则必须调用 CloseHandle()。

关于windows - 当一个进程与其他进程结合运行时,观察到句柄泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4887556/

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