请教_com_ptr_t
一个_com_ptr_t模板创建的智能指针(通过调用CreateInstance)
1.是不是不需要考虑调用Release方法?
2.如果不调用Release会不会内存泄漏?
3.如果赋值为NULL(ptr = NULL)是不是意味着调用Release?
问题点数:50、回复次数:7Top
1 楼PioneerMan(南蛮)回复于 2002-06-10 16:13:11 得分 10
com的指针为一个引用计数
只有在计数为0时才释放内存
创建的对象要求调用release,
如果赋值为NULL(ptr = NULL)不意味着调用Release
如果利用其智能指针就可以不调用releaseTop
2 楼grep(水车)回复于 2002-06-10 16:15:34 得分 25
_com_ptr_t应该是智能指针吧
不用release 超出作用域会自动释放
gzTop
3 楼msl(无所谓)回复于 2002-06-10 16:23:14 得分 0
To PioneerMan((拓荒者)):
例如:
CMyClass::CMyClass()
{
m_ptrXmlDomDocument.CreateInstance( CLSID_DOMDocument );
}
CMyClass::~CMyClass()
{
if( m_ptrXmlDomDocument != NULL )
m_ptrXmlDomDocument = NULL; // 我在这里进行调试进入,发现有调用Release
}
// 其中m_ptrXmlDomDocument是 MSXML2::IXMLDOMDocumentPtr类型的
// 而MSXML2::IXMLDOMDocumentPtr定义为:
// _com_ptr_t< _com_IIID< MSXML2::IXMLDOMDocument, 0 > >Top
4 楼msl(无所谓)回复于 2002-06-10 16:25:33 得分 0
To grep():
那么如果我的这个对象实例化多个,那么ptr = NULL会不会释放所有的引用计数?Top
5 楼msl(无所谓)回复于 2002-06-10 16:44:50 得分 0
up!!!Top
6 楼seanzhao(新云)回复于 2002-06-10 16:51:55 得分 15
_com_ptr_t只能保存最近的object,没有对象实例化多个,ptr = NULL释放所有的引用计数的可能性Top
7 楼msl(无所谓)回复于 2002-06-10 17:01:29 得分 0
To seanzhao(新云):
超出作用域会自动释放吗?例如:我不写ptr = NULL,那么ptr在超出作用域后会调用Release吗?
回答完这个问题后给分!Top




