在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..那个函数来释放内存呢?
}
提供如下接口
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..那个函数来释放内存呢?
}
可是这个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"还用不用释放呢?谢谢