peakzhang 发表于 2007-12-15 21:57:13

ACE_Svc_Handler派生类对象自动销毁?

代码片段如下:


      ACE_Connector<cHandler, ACE_SOCK_CONNECTOR>   connector;
      ACE_INET_Addr         addr(1025, "192.168.1.222");
      
      cHandler      *handler;

      ACE_DEBUG((LM_INFO, ACE_TEXT("(%P|%t) connecting...\n")));

      while (1)
      {
                handler = new cHandler;

                if(connector.connect(handler, addr) == -1)
                {
                        ACE_OS::sleep(2);
                        continue;
                }

                ACE_DEBUG((LM_INFO, ACE_TEXT("(%P|%t) success.\n")));

                break;
      }





cHandler是ACE_Svc_Handler的派生类,问题如下:

如果实现close()方法,必须在该方法中delete this, 释放new出来的对象。

如果不实现close()方法,则new出来的对象会被ACE自动释放。

偶在ACE代码中找了下,似乎没看到哪里自动销毁handler的地方,还请哪位指点一下~

peakzhang 发表于 2007-12-15 21:57:23

找到了

Svc_Handler.cpp

close() -> handle_close() -> destroy()

close()是在connector.connect()返回出错之前调用的。
页: [1]
查看完整版本: ACE_Svc_Handler派生类对象自动销毁?