在VC6ATL中,写了一个COM组件
提供如下接口
HRESULT get_all([in] BSTR bs_tag,[out,retval] IDispatch**para)
{
.....其他实现
CComObject<CComMyClass> * p=new CComObject<CComMyClass>();
p->prt1=100;
p->prt2=101;
p->QueryInterface(IID_DISPATCH,(void**)para)
///注意问题1,这里不能够 delete p; 如果delete那么ASP中调用失败,
///那指针p是在什么地方释放的呢,是不是在ASP页面执行完毕以后,释放的?
//问题2:传入参数BSTR bs_tag在使用完毕以后,是不是需要调用
//sysfree..那个函数来释放内存呢?
}

解决方案 »

  1.   

    Earthdog(Earthdog) 你好
    可是这个COM是在ASP页面中直接调用,例如调用上面这个使用JSCRIPT
    var com1=server.creatobject(...);
    var info =new Object();
    info=com1.get_all("test");
    response.write info.prt1
    response.write info.prt2 
    delete info;
    delete com1
    这样就可以了吗?那BSTR 的"test"还用不用释放呢?谢谢
      

  2.   

    在ASP中你不需要考虑释放问题,因为ASP解释器已经帮你做了这些工作了,释放问题只针对VC,对于VB、VJ所写的程序,释放问题是不需要程序设计人员来考虑的