繁体   English   中英

StackOverflowException

[英]StackOverflowException

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

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

文档

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

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

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

如何更改托管的executable.net的默认堆栈大小

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM