排查JInput内存泄漏问题:Windows窗口无法正常销毁
背景
我正在JInput中实现控制器热插拔功能,期间遇到了内存泄漏问题。我已在Java端取得部分进展,但原生C端仍存在遗留问题,具体涉及窗口的创建与销毁。
问题描述
在JInput库中,Windows平台下的摇杆输入涉及窗口的创建与销毁,此流程由原生C代码处理。调用DestroyWindow函数销毁窗口后,这些隐藏窗口仍会出现在WinLister、Spy++等工具中,并在内存中堆积引发资源泄漏。
已尝试方案
- 尝试在销毁窗口前处理所有剩余消息
- 确保窗口的创建与销毁在同一线程执行
- 检查
DestroyWindow的返回值,并通过调用GetLastError确认未报错
有趣的发现是,再次使用同一句柄调用DestroyWindow时,会返回错误码1400,表示句柄无效。
内容的提问来源于stack exchange,提问作者Marko19907
相关产品推荐
相关产品推荐

