DrawSquare (DibujaCuadrado)
es llamada y se crea un stack frame para ella (en azul). Luego, DrawSquare
llama a la subrutina DrawLine (DibujaLinea)
, la cual tiene su propio stack frame (en verde).En ciencias de la computación, una pila de llamadas (en inglés call stack) es una estructura dinámica de datos LIFO, (una pila), que almacena la información sobre las subrutinas activas de un programa de computadora. Esta clase de pila también es conocida como una pila de ejecución, pila de programa, pila de control, pila de función, o pila de tiempo de ejecución, y a menudo se describe simplemente como "la pila". Aunque el mantenimiento de la pila de llamadas es importante para el correcto funcionamiento de la mayoría de programas, los detalles por lo general están ocultos y de forma automática en los lenguajes de alto nivel. Muchos conjuntos de instrucciones de computadora proveen instrucciones especiales para manipular pilas.
Una pila de llamadas es de uso frecuente para varios propósitos relacionados, pero la principal razón de su uso, es seguir el curso del punto al cual cada subrutina activa debe retornar el control cuando termine de ejecutar. (Las subrutinas activas son las que se han llamado pero todavía no han completado su ejecución ni retornando al lugar siguiente desde donde han sido llamadas). Si, por ejemplo, una subrutina DibujaCuadrado
llama a una subrutina DibujaLinea
desde cuatro lugares diferentes, el código de DibujaLinea
debe tener una manera de saber a dónde retornar. Esto es típicamente hecho por un código que, para cada llamada dentro de DibujaCuadrado, pone la dirección de la instrucción luego de la sentencia de llamada particular (la "dirección de retorno") en la pila de llamadas.