2012-03-07 99 views
5

这里只是一个“确定”的问题。 .NET 4中x64系统的递归/循环中是否存在任何已知的特殊限制/错误?我的情况很简单 - 一个程序在任何x86系统上运行良好,但在x64系统上发生StackOverflowException异常(该程序包含一些xml /映射代码,其中包含几处地方的递归等)。在x64系统上抛出StackOverflowException;在x86上正常工作

目前解决此问题的唯一方法是在我的程序集上调用corflags /32BIT+(并且程序开始正确运行)。但我想知道 - 是否有任何特殊情况会导致x64上的错误/问题?

谢谢。

回答

9

指针需要更多的内存才能以x64表示(实际上是其两倍)。因此,您将使用更多的内存,因此深度递归可能会导致x64上的堆栈溢出早于x86上的堆栈溢出。你可能想尝试raising the stack limit来缓解这个问题。

+3

在我工作过的公司里发生过一次......显然,我是大厦中唯一能够解释为什么发生这种事的人......那些年来,C得到了回报,他们得到了64位。 – 2012-03-07 07:02:43

+0

感谢您的评论和链接 - 两者都非常有帮助。是的,增加堆栈限制也有帮助。 – Jefim 2012-03-07 08:02:57

相关问题