Foros del Web » Programación para mayores de 30 ;) » C/C++ »

¿Limite de pila de de llamada, programacion en C?

Estas en el tema de ¿Limite de pila de de llamada, programacion en C? en el foro de C/C++ en Foros del Web. Me gustaría saber cual es el tamaño de la pila de llamada en C, o de mi compilador... o en windows o en el sistema ...
  #1 (permalink)  
Antiguo 26/10/2012, 08:33
 
Fecha de Ingreso: julio-2009
Mensajes: 36
Antigüedad: 15 años, 4 meses
Puntos: 0
Pregunta ¿Limite de pila de de llamada, programacion en C?

Me gustaría saber cual es el tamaño de la pila de llamada en C, o de mi compilador... o en windows o en el sistema que estoy usando, ya que estoy haciendo una función recursiva de búsqueda secuencial de una array de 200mil elementos y se me termina la pila por obvias razones xD
Uso windows 7 64bits 6GBsRAM
Compilador GNU GCC
Lenguaje en C
Gracias!!!

Última edición por m4rc05; 26/10/2012 a las 10:23 Razón: Cambiar tema
  #2 (permalink)  
Antiguo 26/10/2012, 15:13
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años
Puntos: 52
Respuesta: ¿Limite de pila de de llamada, programacion en C?

Tecnicamente eso lo decide el sistema operativo.
Sin embargo, si realmente crees que el problema es en el numero de llamadas recursivas, existen técnicas para eliminar la recursividad. La mas sencilla es usando una pila, de esta manera utilizas directamente la RAM para guardar las recursiones, y no el heap.

Saludos
  #3 (permalink)  
Antiguo 30/10/2012, 02:28
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 14 años, 5 meses
Puntos: 73
Respuesta: ¿Limite de pila de de llamada, programacion en C?

Algunos compiladores permiten especificar el tamaño de la pila como una de las opciones del compilador, tendrás que buscar en los manuales o menús de ayuda de tu compilador. Si utilizas esa opción (suponiendo que la tengas) es probable que tengas que activar (o desactivar) otras opciones. Por ejemplo, el antiguo compilador Microsoft C para MS-DOS tenía por defecto un tamaño de pila de 2 Kb, que podía modificarse mediante la opción /F a cualquier valor entre 1 byte y 64 Kb, pero recomendaba, si se cambiaba el tamaño de la pila, no suprimir la opción de chequeo del stack (lo que suponía una pequeña pérdida de rendimiento).

En cualquier caso, una función recursiva sobre un array de 200mil elementos puede comerse cualquier pila, y tampoco indicas el tamaño de cada elemento ni qué parámetros pasas o cómo los pasas a esa función. Por ello, como dijo Instru, mejor intenta evitar la recursividad. Las soluciones recursivas pueden ser elegantes y fáciles de implementar, pero pueden consumir grandes cantidades de recursos y de tiempo de ejecución.

Saludos,

Etiquetas: compilar, memoria, programa
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 02:17.