0Pricing
C Academy · Lección

Asignación dinámica de memoria

Explore funciones como malloc, calloc, realloc y free para gestionar la memoria dinámicamente

Asignación dinámica de memoria es una lección gratuita de C Academy en CoddyKit. Esta es la lección 2 de 3. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C Academy incluye 3 lecciones en total.

Asignación dinámica de memoria

Asignación dinámica de memoria

En C, la asignación dinámica de memoria permite asignar memoria durante la ejecución en lugar de hacerlo en tiempo de compilación.

En esta lección, aprenderá:

  • Cómo asignar memoria mediante malloc, calloc y realloc.
  • Cómo liberar la memoria asignada mediante free.
  • Cómo evitar fugas de memoria.
Asignación dinámica de memoria — ilustración 1

¿Qué es la asignación dinámica de memoria?

¿Qué es la asignación dinámica de memoria?

Normalmente, la memoria de las variables se asigna en tiempo de compilación.

Con la asignación dinámica de memoria, la memoria se asigna durante la ejecución del programa mediante funciones especiales.

Esto resulta útil para gestionar arrays o estructuras cuyo tamaño se desconoce en tiempo de compilación.

Asignación de memoria con malloc()

Asignación de memoria con malloc()

La función malloc asigna memoria, pero no la inicializa.

Sintaxis:

ptr = (int*) malloc(size * sizeof(int));

Devuelve un puntero a la memoria asignada o NULL si la asignación falla.

Ejemplo: uso de malloc()

Ejemplo: uso de malloc()

Este programa muestra cómo asignar memoria mediante malloc.

#include <stdio.h>
#include <stdlib.h>

int main() {
    int *ptr = (int*) malloc(5 * sizeof(int));
    if (ptr == NULL) {
        printf("Memory allocation failed!\n");
        return 1;
    }
    for (int i = 0; i < 5; i++) {
        ptr[i] = i * 10;
        printf("%d ", ptr[i]);
    }
    free(ptr);
    return 0;
}

Asignación de memoria con calloc()

Asignación de memoria con calloc()

La función calloc asigna memoria y la inicializa a cero.

Sintaxis:

ptr = (int*) calloc(num_elements, sizeof(int));

Devuelve un puntero a la memoria asignada o NULL si la asignación falla.

Ejemplo: uso de calloc()

Ejemplo: uso de calloc()

Este programa muestra cómo asignar memoria mediante calloc.

#include <stdio.h>
#include <stdlib.h>

int main() {
    int *ptr = (int*) calloc(5, sizeof(int));
    if (ptr == NULL) {
        printf("Memory allocation failed!\n");
        return 1;
    }
    for (int i = 0; i < 5; i++) {
        printf("%d ", ptr[i]); // All elements initialized to 0
    }
    free(ptr);
    return 0;
}

Realocación de memoria con realloc()

Realocación de memoria con realloc()

La función realloc cambia el tamaño de la memoria asignada anteriormente.

Sintaxis:

ptr = realloc(ptr, new_size * sizeof(int));

Devuelve un puntero al nuevo bloque de memoria.

Liberación de memoria con free()

Liberación de memoria con free()

La memoria asignada se debe liberar mediante free() para evitar fugas de memoria.

Sintaxis:

free(ptr);

Una vez liberado, no se debe acceder al puntero.

Resumen

Resumen

En esta lección, ha aprendido:

  • Cómo asignar memoria mediante malloc y calloc.
  • Cómo realocar memoria mediante realloc.
  • Cómo liberar memoria mediante free para evitar fugas de memoria.

A continuación, exploraremos los arrays de punteros y los punteros a funciones en C.

Asignación dinámica de memoria — ilustración 10

Preguntas frecuentes

¿La lección «Asignación dinámica de memoria» es gratis?

Sí — el texto completo de «Asignación dinámica de memoria» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C Academy, actualiza a CoddyKit PRO. El curso de C Academy incluye 3 lecciones en total.

¿Qué aprenderé en «Asignación dinámica de memoria»?

Explore funciones como malloc, calloc, realloc y free para gestionar la memoria dinámicamente Practicas C Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar C Academy?

No se requiere experiencia previa. C Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 3.

¿Cuánto tiempo toma la lección «Asignación dinámica de memoria»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de C Academy?

Sí. Cada lección de C Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Introducción a los punteros
  2. Asignación dinámica de memoria
  3. Arrays de punteros y punteros a funciones
← Volver a C Academy