找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 4527|回复: 1

关于messageblock的问题

[复制链接]
发表于 2008-9-9 19:21:25 | 显示全部楼层 |阅读模式
发现自己的程序内存泄露很严重
{
ACE_OutputCDR cdr;
cdr<<ACE_CDR::ULong(_reply_code);
ACE_Asynch_Write_Stream _writer;
ACE_Message_Block *mblk = cdr.begin().clone();
_writer.write(mblk, mblk.total_length());
}
这样会内存泄露吗,因为cdr.begin()的到的时const ACE_MessageBlock,write需要的参数不能是const的, 所以只好clone, 请问这样会内存泄露吗?有什么办法解决?我在handle_writer_stream的时候释放了mblk.但不知道cdr内的block是不是释放了
 楼主| 发表于 2008-9-9 19:21:31 | 显示全部楼层
肯定有泄漏,最后要调用mblk->release()。
因为clone()是深拷贝,是把里面的数据完整复制一份,已经和cdr没有关系了。你使用完后,必须释放。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-12-22 17:28 , Processed in 0.016018 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表