Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Error: Espacio de pila insuficiente

Estas en el tema de Error: Espacio de pila insuficiente en el foro de Visual Basic clásico en Foros del Web. Hola. Estoy ejecutando normalmente mi sistema y de repente me aparece el error "Espacio de pila insuficiente". Según la ayuda se produce cuando hay mucha ...
  #1 (permalink)  
Antiguo 23/02/2005, 05:20
Avatar de lucasiramos  
Fecha de Ingreso: agosto-2004
Ubicación: Santa Rosa, La Pampa, Argentina
Mensajes: 1.484
Antigüedad: 19 años, 8 meses
Puntos: 13
Error: Espacio de pila insuficiente

Hola. Estoy ejecutando normalmente mi sistema y de repente me aparece el error "Espacio de pila insuficiente". Según la ayuda se produce cuando hay mucha recursividad de procesos. Ya lo tengo casi terminado al sistema, es decir, no voy a cambiar las llamadas a los procesos para que no se produzca tanta recursividad porque sería mucho lío ¿A alguien le ha pasado? ¿Como lo solucionaron? ¿Hay alguna manera de ampliar el espacio de pila?

Saludos. Lucas
  #2 (permalink)  
Antiguo 23/02/2005, 13:45
 
Fecha de Ingreso: febrero-2005
Mensajes: 30
Antigüedad: 19 años, 2 meses
Puntos: 0
Hola,

¿Cuando te da ese error?

Según cuando te de el error, podrá ser de una cosa u otra.

Si te lo da justo al iniciar el programa, no solo puede ser de tu aplicación, sino que también puede darlo algún componente asociado.
Si este es el caso, prueba a reinstalar los componentes o activex que tengas instalados.

Si el error es durante la ejecución, es probable que tengas muchos objetos abiertos o muchas variables globales.
Si es el primer caso, borra todas las asignaciones que puedas, por ejemplo un recordset: set rs = nothing.
Si es el segundo caso, a parte de no ser recomendables las variables globales únicamente cuando sean extrictamente necesariass, intenta quitar las máximas posibles.

Por último, podrías hacer comprobaciones para saber si siempre te da el error en el mismo sitio, si te da el error al estar ejecutando el programa mucho tiempo seguido, etc.

P.D. Si el programa trabaja con archivos y utilizas win9x, aumenta files= en config.sys.

Un saludo.
  #3 (permalink)  
Antiguo 23/02/2005, 14:50
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
El tema de la recursividad no es entre procesos, es en tu propio proceso e implica que una funcion X se llama (a si misma) indefinidamente. Los parametros y la direccion de memoria a la que devuelve una funcion (return) se guardan en la pila (stack) y esta se va llenando hasta desbordarse en un caso de recursividad infinita.

Generalmente la pila tiene un megabyte de memoria reservada.

Con mas datos tal vez te pueda ayudar mas, de ultima pone el ejecutable.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #4 (permalink)  
Antiguo 24/02/2005, 04:43
Avatar de lucasiramos  
Fecha de Ingreso: agosto-2004
Ubicación: Santa Rosa, La Pampa, Argentina
Mensajes: 1.484
Antigüedad: 19 años, 8 meses
Puntos: 13
Ok. Muchas gracias a ambos por sus respuestas. Sospechaba que era por el tema de las variables globales y las llamadas de un proceso a si mismo (pero quería la confirmación oficial de FDW ). Voy a probar optimizando de esa manera. De nuevo, muchas gracias.

Saludos. Lucas
  #5 (permalink)  
Antiguo 24/02/2005, 07:33
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Son las llamadas de una funcion a si misma, las variables globales no afectan porque no se almacenan en la pila, pero las locales (de las funciones) si.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:56.