使用StackOverflowException是硬编码还是依赖于代码运行的机器的条件?

我几乎可以肯定后者,但我的搜索失败,并且在这里没有提出足够的问题。

有帮助吗?

解决方案

来自文档

  

...在执行堆栈溢出时抛出,因为它包含太多嵌套方法调用。

由于堆栈的大小取决于体系结构,甚至可以在计算机上覆盖,是的,这个值不是硬编码的,尽管它在Windows上通常是非常静态的。如果我没记错的话,默认情况下它的大小是1MB。

其他提示

虽然不是您问题的完美匹配,但请参阅:

如何更改默认堆栈大小for managed executable.net

堆栈帧将根据操作系统的寻址模式而有所不同。我相信x64使用稍大的堆栈帧。请记住,进程空间的增长能力远远超过x86,所以总体而言,如果RAM和交换文件大小不成问题,您应该能够将堆栈配置为接受x64上的更多帧。

执行堆栈溢出时抛出的异常,因为它包含太多嵌套方法调用。此类无法继承 MSDN

我尝试了代码并进行了一些更改。我根据自己的经验改变了上述陈述

Framework 4.0 执行堆栈溢出时抛出的异常,因为它包含7573个嵌套方法调用。此类无法继承。

Framework 2.0 执行堆栈溢出时抛出的异常,因为它包含7038个嵌套方法调用。此类无法继承。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top