1)进程外组件在释放接口指针时出现异常
  m_pDBInf.Release()出错
  First Exception in ATLDBTest.exe(KERNEL32.dll):0x80010105:(no name)
  不Release就没有这种错误,请问什么原因,难道不要释放吗
2)组件随着调用次数增加内存一直上涨,接口类使用了全局变量,请问需要释放吗?还有什么可能原因导致内存增加,Variant需要释放吗(Variant包含SafeArray),BSTR呢?谢谢

解决方案 »

  1.   

    1 检查你的引用计数。一个常见的方法是对象创建之后引用计数为1,引用时增加引用计数,使用之后减少引用计数,释放时减少引用计数至0
    2 VariantClear
      

  2.   

    1)我使用的是ATL都被封装好了,在哪里看引用计数呢?因为引用计数都不是我写的
    2)在组件里释放吗?好像不行,释放了数据怎么传出来
      

  3.   

    Release是必需的,但有可能多次释放了。
      

  4.   

    谢谢两位的回复
    现在还有三点疑惑:
    1)接口类的全局变量怎么释放,据说在finalrealse()中,我使用ATL创建的进程外服务,在哪里找它呢?
    2)服务器异常(0x80010105)和远程过程调用失败分别是什么引起的
    3)对应Variant封装的Safearray,其中safearray算不算内嵌指针呢?应该不算吧,算了好像很难处理