_bstr_t::wchar_t*, _bstr_t::char*
演算子は、さまざまなタイプの文字列を返します。
delete
またはそれらをする必要がありfree
ますか?どの機能を使用していますか?
_bstr_t::wchar_t*, _bstr_t::char*
演算子は、さまざまなタイプの文字列を返します。
delete
またはそれらをする必要がありfree
ますか?どの機能を使用していますか?
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);