在一个CDHtmlDialog的某个函数中,IHTMLElement *pElement;
GetElement(_T("img1"),1,&pElement);GetElement(_T("img2"),1,&pElement);...
这样使用N次以后,
中间或使用完后用不用把pElement->Release();掉?
如果不Release掉会不会有内存泄漏?
使用CDHtmlDialog的html事件响应函数中的参数pElement的时候呢?

解决方案 »

  1.   

    只要不用时Release一下就可以了么?
    那函数参数中的pElement呢?
    用完以后要不要Release呢
      

  2.   

    你的要保留这个指针  这样什么时候Release 才能由你控制  
      

  3.   

    如果我在某函数中定义了一个IHTMLElement *pElement; 那么函数结束前不Release是否会导致内存泄漏?
      

  4.   

    有时候即使Release了,内存也没释放的,
      

  5.   

    那要怎么办呢,怎么正确使用这种组件呢,难道要用ATLCComPtr<IHTMLElement> pElement;
    这样才可以不理会内存分配和释放么?
      

  6.   

    反正 COM 指针都在不需要使用的情况下 release 一下就好了
      

  7.   

    本帖最后由 jiangsheng 于 2009-12-21 12:18:55 编辑
      

  8.   

    也就是说是否使用Release无关紧要了吗
      

  9.   

    CComPtr <IHTMLElement> pElement; 这个就不用手工去掉用Release了,因为超出其生命周期时,析构函数里会自动帮你调用Release。
    IHTMLElement *pElement; 这个还是要自己手工去调用Release的,不然就无法保证引用计数正确减一,有可能会引发内存泄露。