2012-03-07 3 views
5

여기는 "확실합니다"라는 질문에 불과합니다. .NET 4의 x64 시스템에 대한 재귀/루프에 대해 알려진 제한/버그가 있습니까?StackOverflowException은 x64 시스템에서 발생합니다. x86에서 제대로 작동합니다.

내 경우는 매우 간단합니다. 프로그램이 모든 x86 시스템에서 정상적으로 실행되지만 x64 시스템의 StackOverflowException과 충돌합니다 (프로그램에 여러 곳에서 재귀가 포함 된 일부 xml/매핑 코드가 포함되어 있음).

현재이 문제를 해결할 수있는 유일한 해결책은 내 어셈블리에서 corflags /32BIT+으로 전화하여 프로그램이 올바르게 실행되기 시작하는 것입니다. 하지만 궁금 해서요 - x64에서 버그/문제를 일으키는 것으로 알려진 특별한 사례가 있습니까?

감사합니다.

답변

9

포인터는 x64로 표현할 때 더 많은 메모리가 필요합니다 (실제로는 2 배). 따라서 더 많은 메모리를 사용할 것이므로 심층 재귀는 x64에서 x86보다 이전에 스택 오버플로를 유발할 수 있습니다. 이 문제를 완화하려면 raising the stack limit을 시도해보십시오.

+3

이것은 내가 일한 회사에서 한 번 일어난 일입니다 ... 왜 내가 그 일이 일어 났는지 설명 할 수있는 건물의 유일한 사람이었습니다 ... C 년 동안 그 돈을 지불하고 64 비트를 출하해야했습니다. –

+0

댓글과 링크를 보내 주셔서 감사합니다. 모두 도움이되었습니다. 그리고 네, 스택 제한을 늘리는 것도 도움이되었습니다. – Jefim

관련 문제