我正在尝试将 _bstr_t 对象转换为 char 数组。更具体地说,我有一个预先分配的 char 数组,我知道它的大小,我想将 _bstr_t 复制到那里。
有一段时间我的代码看起来像这样:
bool ReadCharPtr(_bstr_t const& input, char* output, unsigned int max_len)
{
// THIS CODE IS WRONG !
const char * temp (input );
return ::strcpy_s(output, max_len, temp) == 0;
}
但是......我不确定,并且在 Windows 文档中也不清楚,当我调用operator char*() const
. 是否在堆中分配了一些东西,我必须稍后解除分配?
有没有办法避免这一步,并将字符中的 _bstr_t 实际转换为预分配数组?这将避免在堆上分配字符...