Memoria Stack vs. Heap
Parte de la sección Lógica y Flujo del Journey de C de Coddy. Lección 31 de 63.
Cuando se ejecuta tu programa en C, utiliza dos regiones de memoria distintas: la pila y el montón. Comprender la diferencia entre estas áreas de memoria es fundamental para programar eficazmente en C, especialmente al trabajar con punteros y asignación dinámica de memoria.
La pila se utiliza para la asignación estática de memoria. Aquí es donde se almacenan tus variables locales, parámetros de funciones e información sobre las llamadas a funciones. La pila se gestiona automáticamente mediante el sistema: cuando declaras una variable local, se asigna memoria en la pila y, cuando la variable sale de á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 de la pila, el montón 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 es automática y limitada en tamaño, mientras que la memoria del montón es manual y mucho más grande. En las próximas lecciones, aprenderás a trabajar con la memoria del montón utilizando funciones como malloc() y free().
Pruébalo tú mismo
Esta lección no incluye un desafío de código.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Fundamentos de Punteros
¿Qué es un puntero?Declaración de punterosEl operador de dirección (&)El operador de desreferencia (*)Punteros NULLResumen: Conceptos básicos de punteros4Proyecto: Utilidad de texto simple
Descripción general del proyectoContar caracteres2Punteros y Arrays
Nombres de Arrays como PunterosElementos de un Array - PunterosAritmética de PunterosComparación de PunterosResumen: Recorrido de Arrays con Punteros5Punteros y funciones
Paso por valorPasar punteros a funcionesModificar variables mediante punterosUn ejemplo clásico: Intercambio (Swap)Pasar arrays a funcionesResumen: Argumentos de punteros a funciones3Arreglos de caracteres y cadenas
Cadenas como arreglos de charEl terminador nuloEntrada de cadenas con scanfUso de strlen()Uso de strcpy()Uso de strcat()Uso de strcmp()Resumen: Funciones básicas de cadenasPractica por tu cuenta: Compilador de C online