2012-03-07 16 views
5

esto es solo una pregunta "segura" aquí. ¿Existen limitaciones/errores especiales conocidos sobre recursion/loops para los sistemas x64 en .NET 4?StackOverflowException lanzada en sistemas x64; funciona correctamente en x86

Mi caso es bastante simple: un programa funciona bien en cualquier sistema x86 pero falla con una StackOverflowException en sistemas x64 (el programa incluye un código xml/mapping que contiene recursiones en varios lugares y tal).

Actualmente la única solución para este problema es llamar al corflags /32BIT+ en mi ensamblaje (y el programa comienza a ejecutarse correctamente). Pero me preguntaba: ¿hay algún caso especial que se sabe que causa errores/problemas en x64?

Gracias.

Respuesta

9

Los punteros requieren más memoria para representar en x64 (el doble, de hecho). Como tal, usará mucha más memoria y, por lo tanto, la recursión profunda puede causar desbordamientos de pila en x64 antes de lo que ocurriría en x86. Es posible que desee probar raising the stack limit para mitigar este problema.

+3

Esto sucedió una vez en una empresa para la que trabajé ... al parecer yo era el único en el edificio que podía explicar por qué sucedió ... esos años de C dieron sus frutos, y llegaron a enviar 64 bits. –

+0

Gracias por el comentario y el enlace; ambos fueron muy útiles. Y sí, aumentar el límite de la pila también ayudó. – Jefim

Cuestiones relacionadas