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