gpt4 book ai didi

visual-c++ - 谁拥有从 _bstr_t::wchar_t*、_bstr_t::char* 运算符返回的字符串?

转载 作者:行者123 更新时间:2023-12-04 05:14:22 24 4
gpt4 key购买 nike

_bstr_t::wchar_t*, _bstr_t::char* operators返回不同类型的字符串。

我需要deletefree他们?使用哪个功能?

最佳答案

使用调试器逐步实现后,我的结论是不需要手动delete/free返回的字符串。返回字符串的生命周期由 _bstr_t 管理内部。

请参阅以下实现片段:

// Extract a const char_t*
//
inline _bstr_t::operator const char*() const throw(_com_error)
{
return (m_Data != NULL) ? m_Data->GetString() : NULL;
}

inline const char* _bstr_t::Data_t::GetString() const throw(_com_error)
{
if (m_str == NULL) {
m_str = _com_util::ConvertBSTRToString(m_wstr);

if (m_str == NULL && m_wstr != NULL) {
_com_issue_error(E_OUTOFMEMORY);
}
}

return m_str;
}

inline void _bstr_t::Data_t::_Free() throw()
{
if (m_wstr != NULL) {
::SysFreeString(m_wstr);
}

if (m_str != NULL) {
delete [] m_str;
}
}

也可以使用未命名的 _bstr_t如下,因为 _bstr_t实例被破坏 CString 的构造函数已经完成。
CString abc((LPCTSTR)_bstr_t(OLESTR("ABC")));
AfxMessageBox(abc);

关于visual-c++ - 谁拥有从 _bstr_t::wchar_t*、_bstr_t::char* 运算符返回的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14474629/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com