StackOverflowException, генерируемый в системах x64;работает правильно на x86 - PullRequest
5 голосов
/ 07 марта 2012

это просто вопрос "чтобы быть уверенным" здесь. Существуют ли какие-либо известные специальные ограничения / ошибки в рекурсии / циклах для систем x64 в .NET 4?

Мой случай довольно прост - программа работает нормально на любой системе x86, но она аварийно завершает работу с StackOverflowException на системах x64 (программа включает в себя некоторый код xml / mapping, который содержит рекурсии в нескольких местах и ​​тому подобное).

В настоящее время единственным решением этой проблемы является вызов corflags /32BIT+ в моей сборке (и программа запускается правильно). Но мне было интересно - есть ли особые случаи, которые, как известно, вызывают ошибки / проблемы на x64?

Спасибо.

1 Ответ

9 голосов
/ 07 марта 2012

Указателям требуется больше памяти для представления в x64 (фактически вдвое больше).Таким образом, вы будете использовать гораздо больше памяти, и поэтому глубокая рекурсия может вызвать переполнение стека в x64 раньше, чем в x86.Вы можете попробовать повысить ограничение стека , чтобы смягчить эту проблему.

...