|
在使用Proactor框架时一般怎么样将数据放到Message_Block再进行发送?我使用下边的方法为什么会出现异常,选择“终止”后,提示“内存不能为读”。-
- handle_read_stream()
- {
- ACE_Message_Block &mblk = result.message_block();
- if(!result.success || result.bytes_transferred()==0)
- {
- mblk.release();
- delete this;
- return;
- }
- else
- {
- USER_INFO *user_info=new USER_INFO; //USER_INFO是我定义的一个结构体,我发送的消息一般都是这个结构体
- ACE_OS::memcpy(user_info,mblk.rd_ptr(),sizeof(USER_INFO));
- switch(user_info->l1)
- {
- case MG_TRANSFER:
- {
- user_info->l2="测试";
- ACE_OS::memcpy(mblk.wr_ptr(),user_info,sizeof(USER_INFO));
- mblk.wr_ptr(sizeof(USER_INFO));
- ws_.write(mblk,mblk.length()); //ws_定义为 ACE_Asynch_Write_Stream ws_;
- mblk.release();
- }
- break;
- }
- }
复制代码 |
|