添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

首先要问你的递归函数为什么需要强制退出? 是函数设计问题?或者更不不需要递归?

如果真要退出,最好的办法还是exception。在你的recursion中,如果有使用对象并在构造中申请内存,在析构中释放内存,你只能抛出异常来做完美的退出了。下面代码演示怎么使用异常和递归,但没有加入前面提到的对象概念。

int recursion(int time) throw (std::exception)
   if (time > 100)
     char buf[10];
     memset(&buf, 0x0, 10*sizeof(char));
     throw std::exception(itoa(time, buf, 10));
   time++;
   return recursion(time);
int main(int argc, char *argv[])
   recursion(9);
  catch(std::exception& e)
    std::cout << e.what() << std::endl;
  return 0;
}
setjump/longjump在C里面是可以的,但是在C++这里存在缺陷。如果你的递归函数里面有分配内存,那么setjump/longjump可能会跳过析构函数从而泄漏内存。 评论 ( 0 )