我的一个可执行文件是在单独运行时打开大约330个句柄。当它与另一个特定过程结合运行时,它会泄漏许多句柄。
我在sysinternals中使用了'handle'实用程序来检查两种情况下打开的所有句柄是什么。当此进程与其他特定进程一起运行时,它具有以下句柄条目的额外功能。
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
这样它为Process,Thread,Event打开了400个额外的句柄。 最终这个泄漏导致应用程序崩溃。
我是Windows编程的新手,请原谅我问的是非常基本的问题。 我真的很感激这方面的任何帮助/建议。
答案 0 :(得分:4)
使用CreateProcess()函数时,这是一个非常经典的错误。最后一个参数lpProcessInformation为您提供PROCESS_INFORMATION。如果你对它们不感兴趣,你必须在返回的hProcess和hThread成员上调用CloseHandle()。