peakzhang 发表于 2008-1-11 21:52:32

ACE_Connector::connect失败后,会不会释放SVC_Handler指针啊?

MyServiceHandler * handler= new MyServiceHandler;
    Connector myconnector;
    if(myconnector.connect(handler, addr) < 0)
    {
      //delete handler;   
      return -1;
    }
上面的代码中,如果在connect失败后,对handler进行delete操作,purify会报FMR、FMW、FUM错误。但是如果注释掉就没有问题了,而且也没有内存泄漏。
现在的问题是:如果connect失败了,ACE是否已经帮我是否了handler指针的内存?如果是的话,为什么不顺便把handler置NULL呢?

peakzhang 发表于 2008-1-11 21:52:46

连接失败,会自动调用handler的handle_close(),自动删除处理器对象。不会有内存泄漏。
你多删除一次,反而错误了。
顺便置处理器指针为NULL,没必要,不合乎语义。
页: [1]
查看完整版本: ACE_Connector::connect失败后,会不会释放SVC_Handler指针啊?