none
请问MFC做的浏览器,内存如何释放 RRS feed

  • 问题

  • 请问MFC做的浏览器,内存如何释放

    单文档,继承CHtmlView类,在视图中打开新窗口用OnNewWindow2方法,每打开新窗口,内存都增加(第一个窗口不关闭的),然后关闭子窗口,内存能释放掉大部分,但还是增加一二M,如果经常用地话,那么真是很快会吃掉所有内存。。。郁闷
    是和IE的接口有问题吗???
    请大侠们帮我看看,感感谢

    OnNewWindow2里面代码如下
    C/C++ code
    CWinApp* pApp = AfxGetApp(); POSITION pos = pApp->GetFirstDocTemplatePosition(); CDocTemplate* pDocTemplate = pApp->GetNextDocTemplate( pos ); CFrameWnd* pFrame = pDocTemplate->CreateNewFrame( GetDocument(),(CFrameWnd*)AfxGetMainWnd() ); pDocTemplate->InitialUpdateFrame( pFrame, NULL ); CMyBrowserView* pView = (CMyBrowserView*)pFrame->GetActiveView(); pView->SetRegisterAsBrowser( TRUE ); *ppDisp = pView->GetApplication(); // CHtmlView::OnNewWindow2(ppDisp, Cancel);
    • 已移动 Sheng Jiang 蒋晟 2009年8月4日 12:20 IE开发问题 (发件人:Visual C++)
    2009年8月4日 4:30

答案

全部回复

  • CoUninitialize();
    再看看有没有在堆上分配内存
    麻烦把正确答案设为解答。
    2009年8月4日 7:36
    版主
  • 谢谢楼上的,程序现在没用到COM,CoUninitialize();没有用
    我查看了程序,也未在堆上分配内存,所以也不存在最后的删除


    CFrameWnd* pFrame = pDocTemplate->CreateNewFrame(
            GetDocument(),(CFrameWnd
    *)AfxGetMainWnd() );
    是不是这一句没释放?但也不应该呀,因为子窗口都关闭了,应该连框架都析构掉。。

    程序代码很简单,是个例子,只加了个OnNewWindow2方法
    可下载查看,非常感谢
    http://d.namipan.com/d/e8e08c4ab8a344c6f6f065ccd18b45679b285c4c523f0000
    2009年8月4日 7:58
  • 装IE8,或者定时重启进程。

    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2009年8月4日 12:20