小编Nir*_*n G的帖子

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

我的一个可执行文件在单独运行时打开了大约 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        
Run Code Online (Sandbox Code Playgroud)

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

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

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

windows winapi memory-leaks handle

1
推荐指数
1
解决办法
1995
查看次数

标签 统计

handle ×1

memory-leaks ×1

winapi ×1

windows ×1