2012-03-07 95 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

相關問題