StackOverflowException 是硬编码抛出的条件还是依赖于代码运行的机器?
我几乎可以肯定后者,但我的搜索失败了,并且在这里没有问足够多的问题。
StackOverflowException 是硬编码抛出的条件还是依赖于代码运行的机器?
我几乎可以肯定后者,但我的搜索失败了,并且在这里没有问足够多的问题。
从文档中:
... 当执行堆栈溢出时抛出,因为它包含太多的嵌套方法调用。
由于堆栈的大小取决于体系结构,甚至可以在机器上被覆盖,是的,这个值不是硬编码的,尽管它在 Windows 上通常是相当静态的。如果我没记错的话,默认大小是 1MB。
虽然不是您的问题的完美匹配,但另请参阅:
堆栈帧会因操作系统的寻址模式而异。我相信 x64 使用稍大的堆栈帧。请记住,进程空间能够比 x86 增长更多,因此总体而言,如果 RAM 和交换文件大小不是问题,您应该能够将堆栈配置为在 x64 上接受更多帧。