C/Visual C - Aumentar la pila

 
Vista:

Aumentar la pila

Publicado por mariano (12 intervenciones) el 26/12/2001 11:48:20
Hola:
Tengo un problema con un algoritmo recursivo, que se llama tantas veces, que desborda la pila, creo que con una pila de 64K no habría problema, pero como se lo indico al ide Visual C++ 6.0?
Desde ya, mil gracias, Mariano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Aumentar la pila

Publicado por Googol (255 intervenciones) el 27/12/2001 07:39:59
Creo que por defecto, Visual C++ pone una pila bastante mas grande que 64Kb, o sea que parece que el problema es la recursion, no la pila. Es mas, me parece que el tamanyo por defecto es 1Mega.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Aumentar la pila

Publicado por Mariano (12 intervenciones) el 27/12/2001 10:16:38
Agradezco tu respuesta y lo verifiqué -es 1 M- ,pero la función recursiva se llama a si misma más de 999 veces, lo que satura el sistema, que solo soporta tal cantidad. (CREO necesitar Mucho Más...)
Intenté con la directiva de linqueo /STACK, que recive el tamaño de pila en bytes, si le coloco dos megas ( 1024*2*1024 = 2097152 ), al ejecutar el exe, me dice que no hay suficiente memoria (ERROR Win 32 n° 8)
Sé que algunos compiladores, resuelven los temas de la recursión, de forma tal de no usar la pila, pero no sé cuales.
Gracias a cuarquiera que me pudiera dar una mano.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Aumentar la pila

Publicado por Googol (255 intervenciones) el 31/12/2001 16:16:19
A veces la recursion la puede evitar el programador pasandolo a iterativo. El ejemplo tipico es el calculo del factorial de un numero, fact(i) = i * fact(i-1), que por tanto puede hacerse recursivo, pero que se puede pasar a iterativo facilmente. Puede que tu recursion pueda pasarse a iterativo. Otra cosa que puedes hacer para aumentar las probabilidades de que no se te desborde la pila es eliminando parametros del procedimiento recursivo. Por ejemplo, a veces necesitas pasar como parametro a la funcion una estructura que ocupa bastante (por ejemplo 1Kb): en vez de pasar como parametro la estructura, puedes pasar un puntero a ella, que ocupa menos (hay que recordar que los parametros de las funciones se meten en la pila...).
Lo que se me hace raro es que te diga que no hay memoria suficiente para una pila de 2Mb. :-?

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar