2009-09-10 13 views
5

Con StackOverflowException, ¿las condiciones se arrojan codificadas o dependen de la máquina en la que se está ejecutando el código?StackOverflowException

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

+0

¿Qué quiere decir exactamente con las condiciones? Se lanza cuando la pila está llena y un método intenta asignar más espacio en la pila para contener variables locales y falla. Específicamente, es el código de operación IL de "Localloc" el que arroja esto. –

+0

Me refiero a si hay un límite estricto para cuando la pila se llena esencialmente o es algún otro porcentaje de memoria o alguna otra proporción de la máquina actual? – Pat

Respuesta

8

De the documentation:

... se inicia 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 mal no recuerdo, tiene un tamaño de 1 MB por defecto.

+0

+1. Buena respuesta. – David

0

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

0

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

Intenté este code con algunos cambios. Altere la instrucción anterior según mi experiencia

Framework 4.0 La excepción que se produce cuando la pila de ejecución se desborda porque contiene 7573 llamadas a métodos anidados. Esta clase no puede heredarse.

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

Cuestiones relacionadas