我使用PIC18F26J50开发了系统。我使用Microchip的“通用HID - HID DLL库”编写了一个PC程序进行通信。我正在使用USBREADREPORT方法不断读取字节数据。该程序工作约2小时,然后性能下降。我正在寻找Windows任务管理器并观察到Handle计数不断增加并且随着时间的推移而增加。这表示内存泄漏。我认为我的程序中有一个错误,但是我把问题曝光了并且喜欢HID class.dll中的内存泄漏。
有没有解决这个问题的解决方案?
提前感谢您提供任何帮助
while (true)
{
lock (this)
{
unsafe
{
if ((PerformUsBdataRead()) && (InputPacketBuffer[0] != Nodata))
{
//handle stylus events same as mouse events
}
}
}
}
//perform USB Read
private static bool PerformUsBdataRead()
{
unsafe
{
IntPtr unmanagedPointer = Marshal.AllocHGlobal(65);
InputPacketBuffer[0] = 0;
byte* inputPacketBufferPointer = (byte*)unmanagedPointer.ToPointer();
if (HIDClass.MCHPHIDClass.USBHIDReadReport(inputPacketBufferPointer))
{
unmanagedPointer = (IntPtr)inputPacketBufferPointer;
Marshal.Copy(unmanagedPointer, InputPacketBuffer, 0, 65);
Marshal.FreeHGlobal(unmanagedPointer);
return true;
}
else
{
Marshal.FreeHGlobal(unmanagedPointer);
return false;
}
}
}
答案 0 :(得分:0)
最近微芯片发布了新的HID.dll。你从微芯片中得到它。内存泄漏问题已经解决了。