用ConvertBSTRToString出现的内存泄露有关问题

用ConvertBSTRToString出现的内存泄露问题
在一个函数中这么用

_bstr_t   bstrstr   =   m_pRecordset-> Fields-> Item[l]-> Name;
char*   cstr   =   _com_util::ConvertBSTRToString(   bstrstr   );
string   sstr   =   cstr;
vec.push_back(sstr);
delete   cstr;//如果这里不用delete则最后dump   memory   leak会发生内存泄露,
内存里的内容还是上面产生的字符串,详问这是怎么回事?

函数返回了之后:
_bstr_t   ,string   类型的会自动释放

char*   是局部变量,也应该释放掉啊


------解决方案--------------------
ConvertBSTRToString allocates a string you must delete.


char* cstr是局部变量,但str所指向的内容并不会自动删除的。
------解决方案--------------------
你的方法很麻烦啊
_bstr_t bstrstr = m_pRecordset-> Fields-> Item[l]-> Name;
vec.push_back( string((LPCSTR)bstrstr) );
这样也不会有内存泄露了
------解决方案--------------------
why " allocates a string you must delete "

函数中分配了内存,返回指针,这个指针由调用函数者删除,有什么why的,就是这样子。