ACE_Message_Block的一个使用误区

在阅读《ACE程序员指南》时,发现多处代码都错误的使用了ACE_Message_Block。

在中文版第七章 7.61小节ClientService::handle_input() 函数中,有如下的使用:

char buffer[INPUT_SIZE];                //1 在栈上声明的数组
... ...
ACE_Message_Block *mb;
... ...
ACE_NEW_RETURN
    (mb, ACE_Message_Block (&buffer[send_cnt], remaining), -1); //2 动态分配ACE_Message_Block,引用栈上数组空间
... ...
this->putq(mb, &nowait); //将2中分配ACE_Message_Block放入队列
2中ACE_Message_Block的构造函数,直接引用栈上的地址空间,在函数返回后,栈空间被回收。而此时队上的ACE_Message_Block指向的是非法的空间,以后在使用此Message_Block时,将产生严重问题。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值