我正在向函数SendMessageTimeout传递一个IntPtr,如下所示。SendMessageTimeout属于user32.dll。
我不知道这个动态链接库是如何将内存分配给作为引用传递的IntPtr,即result。
如何释放传递给此函数的IntPtr的内存?
[DllImport("user32")]
public static extern int SendMessageTimeout(
int hwnd, int msg, int wparam, int lparam,
int fuFlags, int uTimeout, IntPtr lpdwResult);
if (handle > 0 && GetWindowText(handle, Buff, nChars) > 0)
{
this.log("GetForegroundWindow : " +Buff.ToString());
foreach (string str in this.titleList)
{
if (Buff.ToString().ToLower().Contains(str.ToLower()))
{
IntPtr result = IntPtr.Zero;
if (SendMessageTimeout(handle, 0x0010, 0, 0, 0x0002, 2000, result) != 0)
DestroyWindow(handle);
killed = true;
break;
}
}
}发布于 2017-03-21 13:25:43
使用完Marshal.FreeHGlobal后,请立即使用它。
您可以使用FreeHGlobal从AllocHGlobal、ReAllocHGlobal或任何等效的非托管API方法分配的全局堆中释放任何内存。
Marshal.FreeHGlobal(lpdwResult);https://stackoverflow.com/questions/42918871
复制相似问题