Nir*_*n G 1 windows winapi memory-leaks handle
我的一个可执行文件在单独运行时打开了大约 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 编程的新手,请原谅我问的是非常基本的问题。我将非常感谢这方面的任何帮助/建议。
使用 CreateProcess() 函数时,这是一个非常经典的错误。最后一个参数 lpProcessInformation 返回一个 PROCESS_INFORMATION。如果您对返回的 hProcess 和 hThread 成员不感兴趣,则必须对它们调用 CloseHandle()。