动态创建的ACE_Reactor对象,不知道如何才能正确释放?
pReactorManager = new CReactorManager( );

pReactorManager->pWFMOReactor = new ACE_WFMO_Reactor( );
pReactor = new ACE_Reactor( pReactorManager->pWFMOReactor );
pReactorManager->pReactor = pReactor;
pReactorManager->nEventHandlers = 1;
pReactorManager->rtReactorType = react_type;
if( !(pReactorManager->hThread=AfxBeginThread(worker_thread, pReactor, THREAD_PRIORITY_LOWEST)) )
{
m_pFileLog->WriteToFile(LT_ERROR, LL_DEBUG_LEVEL,
"Failed to create worker thread for new Reactor!");
}....

解决方案 »

  1.   


    pReactorManager->pReactor->end_reactor_event_loop(); 
    WaitForSingleObject(pReactorManager->hThread, INIFINIT);
    delete pReactorManager->pReactor;
      

  2.   

    1. 最好不要用mfc创建线程的方法。
    2. 开始和结束加入 ACE::init(); ACE::fini();
      

  3.   

    现在还没有证据说明MFC跟ACE结合使用有什么不好,我的应用现在运行得很好,只是退出时出现内存泄露,也许是事件处理器或者反应器的关闭出现问题,能不能提供例子参考一下?