【发布时间】:2021-09-21 13:52:59
【问题描述】:
正如MSDN documentation CComBSTR::operator= 中所写,它创建了一个 src 的副本。 所以当我写
someCComBSTR = std::to_wstring(someVal).c_str();
我会有一份临时的,一切都好。但是我还没有发现之前的值会发生什么,它会被释放还是重写,或者我应该先手动清空我的 CComBSTR 对象?
【问题讨论】:
-
不确定您所说的“临时”是什么意思。您正在使用的
=运算符版本将LPCSTR作为其参数,并将其副本分配给目标BSTR对象的m_str成员。据推测,当someCComBSTR被销毁时,它将被释放。 -
如果类没有被破坏,你可以假设它正确地管理了它的资源。您是否观察到一些内存泄漏?相关类型:stackoverflow.com/questions/4172722/what-is-the-rule-of-three
-
@463 Visual Studio 带有几个
BSTR包装器(CComBSTR、_bstr_t等)。它们在资源管理方面的行为都略有不同。做出假设是糟糕的建议。