CFormView 中使用 OLE (或 .net) 控件后发生内存泄漏

2008-09-08 18:35:16 旧日重来

最近研究了一下 Webbrowser 控件,写了个模仿 CHtmlView 的类,继承 CFormView 创建控件,用的还挺方便。就是每创建一个 view 就会在 viewform.cpp 里产生一个内存泄漏。对照 memory leak 的记录提示跟过去看看,发现是在 viewform.cpp 文件

_AFX_OCC_DIALOG_INFO *pOccDialogInfo = new
  _AFX_OCC_DIALOG_INFO;

这里 new 的东东没释放。OLE 的东东不甚懂,google 了一圈,发现有不少同病相怜的哥们儿,一般都是加了个 .net 的控件然后内存泄漏的,和我代码的共同点都是在 FormView 中添加了 OLE 控件。可惜网上的都没有找出解决方案……

最后瞎试了半天,发现稍稍改一下代码就可以了……
把自己的 view 的构造函数,由:

CXXView::CXXView()
: CFormView(CXXView::IDD)  // 产生内存泄漏的行 by 旧日重来
{
}

改成

CXXView::CXXView()
: CFormView((LPCTSTR) NULL)
{
}

即可。不知是甚么原因,把解决方法记录下来以备不时之需,呵呵

查看:原文地址;来源:live.aulddays.com


注意:本站所有文章除特别说明外均为原创,版权所有,转载请务必以超链接方式注明作者出处,并禁止用作商业用途