¿Cómo prevenir un desbordamiento de pila mediante el control del tamaño de la pila?

StackOverflow https://stackoverflow.com/questions/919305

  •  06-09-2019
  •  | 
  •  

Pregunta

Muchos C / C ++ / Fortran y otros programadores han llegado a través de los errores de "desbordamiento de pila". Mi pregunta es: ¿Existe una herramienta, un programa o un simple fragmento de código, que nos permiten controlar o comprobar el tamaño de la pila mientras el programa se está ejecutando? Esto puede ser útil para determinar dónde se acumula la pila y causando desbordamiento eventual.

¿Fue útil?

Solución

No sé si hay un programa que va a hacer por usted, pero usted puede comprobar fácilmente dentro de una función donde el puntero de pila es (al menos en C y C ++). Basta con mirar a la posición de memoria de cualquier variable. No será la ubicación exacta, pero debe ser dentro de unos pocos bytes (lo cual está bien para sus propósitos), ya que las variables locales se definen en la pila. Si desea que el valor exacto se puede obtener a través del conjunto que yo creo.

Puede ser que sea más fácil simplemente mirar el seguimiento de la pila cuando se bloquea el programa, sin embargo.

Otros consejos

Tener un vistazo a este pregunta . La respuesta aceptada cita Raymond Chen:

If you have to ask, you're probably doing something wrong.

Si usted definitivamente necesidad de hacerlo, entonces la solución / herramienta será dependiente de la plataforma. Un truco fácil es llenar la pila con un valor de byte conocido (por ejemplo AA) y monitorizar la posición del primer byte que no tiene este valor. Esto le dará el tamaño máximo de pila utilizada, no el tamaño de pila actual.

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