使用StackOverflowException是硬编码还是依赖运行代码的机器的条件?
我几乎可以肯定后者,但我的搜索失败,并且在这里没有提出足够的问题。
答案 0 :(得分:8)
...在执行堆栈溢出时抛出,因为它包含太多嵌套方法调用。
由于堆栈的大小取决于体系结构,甚至可以在计算机上覆盖,是的,这个值不是硬编码的,尽管它在Windows上通常是非常静态的。如果我没记错的话,默认情况下它的大小是1MB。
答案 1 :(得分:2)
虽然不是您问题的完美匹配,但请参阅:
How do you change default stack size for managed executable.net
答案 2 :(得分:0)
堆栈帧将根据操作系统的寻址模式而有所不同。我相信x64使用稍大的堆栈帧。请记住,进程空间的增长能力远远超过x86,所以总体而言,如果RAM和交换文件大小不成问题,您应该能够将堆栈配置为接受x64上的更多帧。
答案 3 :(得分:0)