在编写生产质量的VC++代码时,使用递归是否可以接受?为什么或者为什么不?
有没有办法确定我会在什么时候遇到堆栈溢出?
并不是的.当你耗尽堆栈空间时会发生堆栈溢出 - 但是......
初始堆栈大小可以以编程方式更改,并且可能默认为不同的数量,具体取决于您的OS /编译器/等
已经用完了多少取决于你的应用程序(以及你的应用程序使用的库)以前做过什么 - 这通常无法预测
每个调用所需的堆栈数量取决于您在函数中执行的操作.如果你只在堆栈上分配1个整数,你可能能够重复一次,但是如果你在堆栈上分配一个200k的缓冲区,那就不那么重要了.
我曾经遇到过的唯一一次是无限循环,或使用前面提到的200k缓冲区.
我发现我的应用程序更容易崩溃,而不是使用100%CPU永远循环并且必须被强行杀死(由于Windows缺少SSH,这是一个错误连接的远程服务器上的正确PITA)
一个粗略的准则:你认为你的递归函数可能会连续称自己超过10000次吗?或者你正在做一些愚蠢的事情,比如在堆栈上分配200k缓冲区?
如果是,请担心.
如果不是,继续进行更重要的事情.