内存泄露的小问题(转载)
2007-02-10 13:05
281 查看
转载自:/article/4765928.html
_bstr_t GetMessage(){
_bstr_t msg = "Hello,world!";
return msg.Copy();
}
void MyFunction(){
GetMessage();
}
内存有泄露。。。但是已解决。。。希望对大家有用!
(暂时放首页两天,也算和.NET相关,因为我们是aspx对这个COM+作interop的)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
前面的写法因调用copy产生了一个未包装的BSTR无人释放,因此有泄漏
后面的写法也不好,_bstr_t::operator wchar_t*() const并不生成新的BSTR串,在msg析构时也会释放自己生成的对象,因此SysFreeString(tmp)纯粹多此一举,不过从表面看SysFreeString两次释放同一个BSTR似乎没有什么副作用,因此这种写法使用应该没什么问题
这样
_bstr_t GetMessage()
{
_bstr_t msg = "Hello,world!";
return static_cast< wchar_t* >(msg);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
第一种写法改成
_bstr_t GetMessage()
{
_bstr_t msg = "Hello,world!";
return msg.copy(false);
}
亦可
_bstr_t GetMessage(){
_bstr_t msg = "Hello,world!";
return msg.Copy();
}
void MyFunction(){
GetMessage();
}
内存有泄露。。。但是已解决。。。希望对大家有用!
(暂时放首页两天,也算和.NET相关,因为我们是aspx对这个COM+作interop的)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
前面的写法因调用copy产生了一个未包装的BSTR无人释放,因此有泄漏
后面的写法也不好,_bstr_t::operator wchar_t*() const并不生成新的BSTR串,在msg析构时也会释放自己生成的对象,因此SysFreeString(tmp)纯粹多此一举,不过从表面看SysFreeString两次释放同一个BSTR似乎没有什么副作用,因此这种写法使用应该没什么问题
这样
_bstr_t GetMessage()
{
_bstr_t msg = "Hello,world!";
return static_cast< wchar_t* >(msg);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
第一种写法改成
_bstr_t GetMessage()
{
_bstr_t msg = "Hello,world!";
return msg.copy(false);
}
亦可
相关文章推荐
- 如何检查内存泄露问题[转载]
- Java中隐藏的this变量和局部变量可能引发的内存泄露问题
- 转载 应用 Valgrind 发现 Linux 程序的内存问题
- 讨论:Java内存泄露问题
- Handler导致的内存泄露问题
- 关于DB组件造成的内存泄露问题解析及解决
- memset函数导致内存泄露的问题
- 关于handler内存泄露的问题
- 问题和答案-内存泄露
- opencv中cvLoadImage和cvCloneImage的内存泄露问题
- 内存泄露,缓冲区溢出,堆破坏 的问题
- Java内存泄露问题
- mfc框架下osg的内存泄露问题(转)
- MFCLinkCtrl 的内存泄露问题
- Java内存泄露问题定位常用命令
- Android之优化技术--android GC内存泄露问题
- Java内存泄露问题分析
- android中常出现的内存泄露问题
- org.springframework.web.servlet.view.InternalResourceViewResolver 内存泄露问题
- WPF的BitmapImage的文件无法释放及内存泄露的问题