描述:
怎么理解这句话?
"_bstr_t与CComBSTR之间的区别是_bstr_t保持了一个内部引用。在许多情况下,此引用计数机制使得_bstr_t更为有效,因为这减少了分配和取消分配内存的次数。"
"保持了一个内部引用"和"此引用计数机制使得_bstr_t更为有效,因为这减少了分配和取消分配内存的次数。"是什么意思?
解决方案1:
_bstr_t是一个BSTR的包装类,其析构过程如下,释放内存的操作只有在内部引用计数为0的时候才会真正的调用delete释放内存。>0的时候则是对引用计数进行减一操作,这使得使用_bstr_t能够减少释放内存的操作
inline _bstr_t::~_bstr_t() throw()
{
_Free();
}
inline void _bstr_t::_Free() throw()
{
if (m_Data != NULL) {
m_Data->Release();
m_Data = NULL;
}
}
inline unsigned long _bstr_t::Data_t::Release() throw()
{
if (!InterlockedDecrement(reinterpret_cast<long*>(&m_RefCount))) {
delete this;
return 0;
}
return m_RefCount;
}