所有的com对象都必须要用release作释放

解决方案 »

  1.   


    顶,只不过一般Release都封装了一层。
      

  2.   

    那为什么我调用Release释放之后 ,会报错。不调用Release就不报错
      

  3.   

    你是如何调用Release的?
    p->Release()还是p.Release()如果是智能指针的话,只能调用p.Release()
    ,或者不用调用,他自己会释放
      

  4.   

    p->Release()还是p.Release()有什么区别???
      

  5.   

    p->Release()是原始的COM接口指针的方法。
    p.Release()是智能指针的方法。
    如果你用的是原始的COM接口指针,应该用p->Release()来释放。
    但如果你用的是智能指针,需要用p.Release()来释放,因为智能指针不允许p->Release(),这样调用会触发断言错误。我看你列举的这几个接口指针
    IXMLDOMCommentPtr
    都是Ptr后缀的,这样应该是VC生成智能指针类
      

  6.   

    智能指针不是释放内存用的吗?这里COM的智能指针是什么意思???
      

  7.   


    智能指针可以帮助你自动的释放内存,所以使用智能指针的时候,一般不需要调用Release(),
    但如果你非要手动释放,比如需要把指针先置为空再指向其它对象,这时可以手动调用.Release()来释放。
    总之智能指针不能这样调用->Release()。