Pregunta

Con la excepción StackOverflowException, ¿están las condiciones para ser codificadas o dependen de la máquina en la que se ejecuta el código?

Estoy casi seguro de esto último, pero he fallado en mis búsquedas y no hago suficientes preguntas aquí.

¿Fue útil?

Solución

De la documentación :

  

... se lanza cuando la pila de ejecución se desborda porque contiene demasiadas llamadas a métodos anidados.

Dado que el tamaño de la pila depende de la arquitectura e incluso se puede anular en una máquina, sí, este valor no está codificado, aunque en general es bastante estático en Windows. Si recuerdo correctamente, tiene un tamaño de 1 MB por defecto.

Otros consejos

Aunque no es una combinación perfecta para su pregunta, vea también:

¿Cómo cambia el tamaño de pila predeterminado? para executable.net administrado

Los marcos de pila variarán según el modo de direccionamiento de su sistema operativo. Creo que x64 utiliza marcos de pila un poco más grandes. Tenga en cuenta que el espacio de proceso es capaz de crecer mucho más que en x86, por lo que, en general, debería poder configurar su pila para aceptar más marcos en x64, si la RAM y el tamaño del archivo de intercambio no son un problema.

La excepción que se produce cuando la pila de ejecución se desborda porque contiene demasiadas llamadas a métodos anidados. Esta clase no se puede heredar . MSDN

Probé este código con algunos cambios. Modifico la declaración anterior de acuerdo con mi experiencia

Framework 4.0 La excepción que se produce cuando la pila de ejecución se desborda porque contiene 7573 llamadas de método anidadas. Esta clase no se puede heredar.

Framework 2.0 La excepción que se produce cuando la pila de ejecución se desborda porque contiene 7038 llamadas de método anidadas. Esta clase no se puede heredar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top