在结束整个应用程序时,会偶尔出现某内存地址中断错误~~~我跟踪了一下,该地址为程序中调用ACE_Reactor::instance()->run_reactor_event_loop()的地方,反汇编程序如下:ACE_Reactor::instance()->run_reactor_event_loop();
004158C9 mov esi,esp 
004158CB call dword ptr [__imp_ACE_Reactor::instance (440768h)] 
004158D1 cmp esi,esp 
004158D3 call @ILT+3310(__RTC_CheckEsp) (412CF3h) 
004158D8 mov dword ptr [ebp-3D4h],eax 
004158DE mov esi,esp 
004158E0 push 0 
004158E2 mov eax,dword ptr [ebp-3D4h] 
004158E8 mov edx,dword ptr [eax] 
004158EA mov ecx,dword ptr [ebp-3D4h] 
004158F0 call dword ptr [edx+4] 004158F3 cmp esi,esp //此处出错004158F5 call @ILT+3310(__RTC_CheckEsp) (412CF3h) 
应用程序结束调用的代码为:
ACE_Reactor::instance()->end_reactor_event_loop();
peer().close();
ACE_Reactor::instance()->remove_handler(ACE_Event_Handler:ONT_CALL);
ACE_Reactor::instance()->close();
ACE_Thread::cancel(t_id);不知是不是对ACE使用方法不正确? 还是...请教大家了~~~ ^_^

解决方案 »

  1.   

    懂ACE的XDJM们帮帮忙了~~~在线等......
      

  2.   

    链接一个DEBUG版本的ACE库,跟踪到里面就知道哪里出错啦
    确认你的Reactor中注册的handler是否有效
      

  3.   

    你使用了reactor的单子模式,应该不用显式的调用其相关的释放函数!
      

  4.   

    TO:  lifengice0706(无)我最开始没有调用其释放函数,也有同样的问题,所以才添加了释放函数,但也没有效果,不知为何~~~