peakzhang 发表于 2008-9-9 19:21:25

关于messageblock的问题

发现自己的程序内存泄露很严重
{
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是不是释放了

peakzhang 发表于 2008-9-9 19:21:31

肯定有泄漏,最后要调用mblk->release()。
因为clone()是深拷贝,是把里面的数据完整复制一份,已经和cdr没有关系了。你使用完后,必须释放。
页: [1]
查看完整版本: 关于messageblock的问题