El tiempo de ejecucion en los programas de C++... Nocion basica de Pila.

Durante este breve post, tratare de exponer una caracteristica muy importante de la programacion en C++, y es el entender cual es el concepto de Pila.

Bueno, ¿Que es una Pila?, Una Pila en C++, es por asi decirlo el "lugar" donde se alojan las "llamadas" a las funciones que nosotros desarrollemos, en realidad, la pila es manejada por el sistema operativo, ya que nuestra funcion "main" es la primera a la que se hace llamado, y este llamado lo efectua el sistema operativo y lo coloca en la "ultima" posicion de la Pila, lo que hay que tener en cuenta, es que la manera en como se comportan las llamadas a funciones, es algo coonocido como UEPS, estas siglas significan literalmente, "Ultimo en Entrar, Primero en Salir", por lo cual cuando el sistema operativo hace la llamada a la funcion "main" de nuestro programa en C++, esto significa que al ser "main" el ultimo en entrar en la pila, sera el primero en salir una vez que termine de realizar los procedimientos para lo cual fue llamada, en este momento, es decir, cuando "main" termina, en ese instante la llamada se resuelve y regresa al control  sistema operativo, acto seguido, la entrada en la pila para "main" es liberada, junto con todas sus definiciones, etc.

Lo interesante aqui es notar que, si la funcion "main" que nosotros hemos programado en C++, a su vez, realiza llamadas a funciones, estas por asi decirlo toma la ultima posicion en la pila y , al ser las ultimas en entrar , tienen que ser las primeras en salir. Por ejemplo si en la funcion "main" nosotros hacemos una llamado a una funcion que nos calcula el cuadrado de cierto numero, esa funcion "cuadrado", se apila y tiene que resolverse primero que main, una vez que "cuadrado" termina, el registro en la pila para "cuadrado" retorna a "main", liberando asi esa posicion en la pila.

Esto nos hace llegar a la conclusion de que la computadora, tiene un cierto limite de acuerdo a las caracteristicas de la misma, de alojar funciones en la Pila, si se rebasa ese limite , haciendo llamadas a funciones, esto se conoce como error de "Desbordamiento" , algunos malware y virus, precisamente son desarrollados con este proposito.

Entender como se resuelven las llamadas a funciones, nos beneficia en el sentido de que procuraremos llevar a cabo, buenas practicas de desarrollo de software, ademas de que de esta manera, existe un mayor entendimiento entre usuario y maquina.

Comentarios

Entradas populares de este blog

Crear la funcion gotoxy(), en dev-c++ ... ejemplo sencillo.

Ejercicio de C++, ejemplo: promedio de un Alumno y la sentencia IF

Como dar formato a los decimales en C++