ace_message_block release出问题了
我的问题是这样的:网络收集到的视频数据,转发多份到客户端,在数据量比较大的天情况下(小包),不定时在ACE_Message_Block Release时会出现非法(vc2005开着调试时不大出现,有10多天的测试,开release时比较容易出现,2天左右)。用的是前摄器+线程池+主动对象+内存池。内存池用分配器创建管理:
ACE_NEW(mb_allocator_, ACE_Dynamic_Cached_Allocator<ACE_Thread_Mutex>(mb_count_, mb_size));
ACE_Message_Block创建如下
mb = new ACE_Message_Block(len, ACE_Message_Block::MB_DATA, 0, 0,
mb_allocator_, 0, ACE_DEFAULT_MESSAGE_BLOCK_PRIORITY,
ACE_Time_Value::zero, ACE_Time_Value::max_time, 0, 0);
ACE_Message_Block在接收到数据后申请一次,放入到主动对象的发送线程列表加一次引用计数,发送时再增加一次计数
Relese也是三次,感觉没有错,
现在这个问题比较麻烦,望高手指点迷津,谢谢 个人认为,还是从内存、线程角度去查一下。用purify工具跑跑比较好。
页:
[1]