我正在试图弄清楚以下情况是否会导致内存泄漏。
我从WebBrowser控件获取窗口句柄(这是有原因的)
IntPtr p = webBrowser1.FindForm().Handle;
稍后,我将在重写的dispose方法中释放该句柄
protected override void Dispose(bool disposing)
{
hwnd = IntPtr.Zero;
base.Dispose(disposing);
}
我的Dispose
方法背后是否存在可能导致内存泄漏的恶意?
这对某些人来说可能是显而易见的,但我正在寻找内存泄漏,因此我正在尝试验证每行代码。
答案 0 :(得分:7)
将HWND设置为IntPtr.Zero没有任何意义。
IntPtr是一种值类型,因此拥有该变量中的值对任何内容都没有影响。它不会保持任何物体存活。这只是一个你设置为0的数字。
如果从现有窗口获得HWND,则不应该复制任何句柄,也不必释放它。表格关闭时,HWND将被销毁。