免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1064 | 回复: 0
打印 上一主题 下一主题

[C++] map erase报错 [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-01-21 16:50 |只看该作者 |倒序浏览
  1. void TServer::AutoCloseEvent(Conn *conn)
  2. {
  3.         DataBuff *send_buf=&m_MainThreadInfo->send_buf;
  4.         if(conn->fd_type==2){
  5.                 map <int, map <int, Conn*>>::iterator iter_pro;
  6.                 if ((iter_pro = g_app_module_process.find(conn->process_conf_index)) != g_app_module_process.end()) {
  7.                         map <int, Conn*>::iterator it;
  8.                         if ((it = iter_pro->second.find(conn->GetFd())) != iter_pro->second.end()) {
  9.                                 iter_pro->second.erase(it);
  10.                         }
  11.                         if(iter_pro->second.size()==0)
  12.                                 g_app_module_process.erase(iter_pro);
  13.                 }

  14.                 if(g_app_module_process.size()<g_app_module_name.size()){
  15.                         if(g_pConf->BACKPRO==1)
  16.                                 g_module.start=0;
  17.                 }
  18.         }
  19. }
复制代码
g_app_module_process.erase(iter_pro);为啥会报错?

下面是错误信息
  1. (gdb) bt
  2. #0  std::_Rb_tree_rebalance_for_erase (__z=__z@entry=0x7f66480011d0, __header=...) at ../../../../../libstdc++-v3/src/c++98/tree.cc:370
  3. #1  0x000000000040bf33 in _M_erase_aux (__position=..., this=<optimized out>) at /usr/include/c++/4.8.2/bits/stl_tree.h:1745
  4. #2  erase (__position=..., this=<optimized out>) at /usr/include/c++/4.8.2/bits/stl_tree.h:820
  5. #3  erase (__position=..., this=<optimized out>) at /usr/include/c++/4.8.2/bits/stl_map.h:697
  6. #4  TServer::AutoCloseEvent (this=this@entry=0x7baa50, conn=0x8582b0) at routing/src/TServer.cpp:285
  7. #5  0x000000000040c39a in TServer::TimeOutCb (this=this@entry=0x7baa50) at routing/src/TServer.cpp:416
  8. #6  0x000000000040c48b in TServer::TimerCb (this=0x7baa50) at routing/src/TServer.cpp:363
  9. #7  0x0000000000408bce in MultiServer::WorkerTimerEvent (arg=<optimized out>) at routing/src/MultiServer.cpp:281
  10. #8  0x00007f66cafe3df3 in start_thread (arg=0x7f66c9b4c700) at pthread_create.c:308
  11. #9  0x00007f66c9c431ad in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113
  12. (gdb) list
  13. 280                                map <int, Conn*>::iterator it;
  14. 281                                if ((it = iter_pro->second.find(conn->GetFd())) != iter_pro->second.end()) {
  15. 282                                        iter_pro->second.erase(it);
  16. 283                                }
  17. 284                                if(iter_pro->second.size()==0)
  18. 285                                        g_app_module_process.erase(iter_pro);
  19. 286                        }
  20. 287       
  21. 288                        if(g_app_module_process.size()<g_app_module_name.size()){
  22. 289                                if(g_pConf->BACKPRO==1)

复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP