Tabla de contenidos
sizeof()
Cuando se escribe un programa, se asume que las variables se almacenan en memoria y están ahí disponibles para ser utilizadas. En principio, los detalles de cómo se almacenan y organizan los datos en memoria no son visibles a un programador. Sin embargo, como el lenguaje de programación C nos ofrece una gestión de memoria muy cercana a la RAM, para realizar un uso eficiente de la memoria es preciso conocer más de cerca cómo se organiza la memoria de un programa.
Un programa en C almacena sus datos en memoria en tres áreas diferentes:
Memoria global. Es el área en la que están almacenadas
las variables que se declaran globales o estáticas y las constantes de
tipo cadena de caracteres (por ejemplo "Mi string"
). Es
decir, en esta zona de memoria se almacenan todos aquellos datos que
están presentes desde el comienzo del programa hasta que termina.
La pila. Es un área en la que las variables aparecen y desaparecen en un momento puntual de la ejecución de un programa. Se utiliza principalmente para almacenar variables locales a las funciones. Estas variables tienen un ámbito reducido, sólo están disponibles mientras se está ejecutando la función en la que han sido definidas. En la pila se encuentran todas estas variables, y por tanto, en esa zona se está continuamente insertando y borrando variables nuevas.
El heap. Esta zona (traducida en algunos casos como “el montón”) contiene memoria disponible para que se reserve y libere en cualquier momento durante la ejecución de un programa. No está dedicada a variables locales de las funciones como la pila, sino que es memoria denominada “dinámica” para estructuras de datos que no se saben si se necesitan, e incluso tampoco se sabe su tamaño hasta que el programa está ejecutando.
Nótese que de estas tres zonas sólo la memoria global tiene un tamaño fijo y que se sabe cuando comienza la ejecución de un programa. Tanto la pila como el heap albergan datos cuyo tamaño no se puede saber hasta que el programa está en ejecución. La siguiente figura muestra estas tres zonas de memoria.
Como las áreas de heap y pila tienen un tamaño variable, el sistema operativo reserva un espacio inicial y las dos zonas crecen y decrecen dentro de ese espacio máximo.
Responde a las siguientes preguntas para ver si has entendido lo que se explica en este documento: