提问人:Marko19907 提问时间:11/1/2023 更新时间:11/1/2023 访问量:87
对 JInput 中的内存泄漏进行故障排除:Windows 未被正确销毁
Troubleshooting Memory Leak in JInput: Windows Not Getting Destroyed Properly
问:
背景
我正在努力实现控制器热插拔,但遇到了内存泄漏。我在 Java 方面取得了一些进展,这记录在本 PR 中,但在原生 C 方面似乎存在一个挥之不去的问题,特别是在窗口创建和销毁方面。JInput
可以在此处找到该问题的完整背景。
问题描述
在库中,Windows 上的操纵杆输入涉及创建和销毁窗口。此过程由本机 C 代码处理,可在此处找到。
当我尝试使用 .即使在调用此函数后,隐藏的窗口仍会继续出现在 and 等工具中,并累积在内存中,从而导致资源泄漏。JInput
DestroyWindow
WinLister
Spy++
我试过什么
- 我试图在销毁窗口之前处理它们的所有剩余消息。
- 我确保创建和销毁都由同一个线程执行。
- 我已经检查了 DestroyWindow 的返回值,并通过调用 GetLastError 验证它没有报告任何错误。
一个有趣的观察结果是,当我尝试使用相同的句柄再次调用 DestroyWindow 时,它返回错误代码 1400,指示句柄无效。
答: 暂无答案
评论
JInput
GetMessage
PostMessage