找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 4460|回复: 1

ACE_Svc_Handler派生类对象自动销毁?

[复制链接]
发表于 2007-12-15 21:57:13 | 显示全部楼层 |阅读模式
代码片段如下:
  1.         ACE_Connector<cHandler, ACE_SOCK_CONNECTOR>   connector;
  2.         ACE_INET_Addr           addr(1025, "192.168.1.222");
  3.         
  4.         cHandler      *handler;
  5.         ACE_DEBUG((LM_INFO, ACE_TEXT("(%P|%t) connecting...\n")));
  6.         while (1)
  7.         {
  8.                 handler = new cHandler;
  9.                 if(connector.connect(handler, addr) == -1)
  10.                 {
  11.                         ACE_OS::sleep(2);
  12.                         continue;
  13.                 }
  14.                 ACE_DEBUG((LM_INFO, ACE_TEXT("(%P|%t) success.\n")));
  15.                 break;
  16.         }
复制代码

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

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

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

偶在ACE代码中找了下,似乎没看到哪里自动销毁handler的地方,还请哪位指点一下~
 楼主| 发表于 2007-12-15 21:57:23 | 显示全部楼层
找到了

Svc_Handler.cpp

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

close()是在connector.connect()返回出错之前调用的。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-5-20 07:27 , Processed in 0.014386 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表