Menu
Coddy logo textTech

Memoria Stack vs. Heap

Parte de la sección Logic & Flow del Journey de C de Coddy — lección 31 de 63.

Cuando su programa en C se ejecuta, utiliza dos regiones de memoria distintas: la pila (stack) y el montículo (heap). Comprender la diferencia entre estas áreas de memoria es crucial para una programación en C eficaz, especialmente cuando se trabaja con punteros y asignación dinámica de memoria.

La pila (stack) se utiliza para la asignación de memoria estática. Aquí es donde se almacenan las variables locales, los parámetros de las funciones y la información de las llamadas a funciones. La pila es gestionada automáticamente por el sistema: cuando declaras una variable local, se asigna memoria en la pila, y cuando la variable sale de su ámbito, esa memoria se libera automáticamente.

void function() {
    int x = 10;  // Asignado en la pila
    char arr[100];  // También asignado en la pila
    // La memoria se libera automáticamente cuando la función termina
}

El heap se utiliza para la asignación dinámica de memoria. Este es un grupo de memoria más grande que puedes solicitar durante la ejecución del programa.

A diferencia del stack, el heap requiere una gestión manual: debes solicitar memoria explícitamente y liberarla más tarde cuando hayas terminado. Esto te brinda más control, pero también más responsabilidad.

La diferencia clave es la gestión: la memoria de pila (stack) es automática y de tamaño limitado, mientras que la memoria de montón (heap) es manual y mucho más grande. En las próximas lecciones, aprenderás a trabajar con la memoria de montón (heap) utilizando funciones como malloc() y free().

Hoja de referencia

Los programas en C utilizan dos regiones de memoria distintas:

Pila (Stack): Se utiliza para la asignación de memoria estática. Almacena variables locales, parámetros de funciones e información de llamadas a funciones. La memoria se gestiona automáticamente: se asigna cuando se declaran las variables y se libera cuando salen de su ámbito.

void function() {
    int x = 10;  // Asignado en la pila
    char arr[100];  // También asignado en la pila
    // La memoria se libera automáticamente cuando termina la función
}

Montículo (Heap): Se utiliza para la asignación de memoria dinámica. Es un grupo de memoria más grande que requiere gestión manual: debe solicitar y liberar memoria explícitamente utilizando funciones como malloc() y free().

Diferencia clave: La memoria de la pila es automática y de tamaño limitado, mientras que la memoria del montículo es manual y mucho más grande.

Pruébalo tú mismo

Esta lección no incluye un desafío de código.

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Logic & Flow