Asignación dinámica de memoria en el programa C

CCBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En la programación en C, no siempre sabemos de antemano el tamaño inicial de una matriz. En tales casos, usamos la asignación dinámica de memoria, un método de asignar memoria solo cuando sea necesario. malloc() es una función utilizada en la programación en C para asignar una cantidad específica de memoria necesaria para una matriz o una variable que se utilizará en tiempo de ejecución. En este laboratorio, aprenderemos cómo asignar memoria dinámicamente utilizando malloc() y luego liberar el espacio de memoria utilizando free().

Nota: Debes crear el archivo ~/project/main.c por ti mismo para practicar la codificación y aprender cómo compilar y ejecutarlo utilizando gcc.

cd ~/project
## crear main.c
touch main.c
## compilar main.c
gcc main.c -o main
## ejecutar main
./main

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/BasicsGroup(["Basics"]) c(("C")) -.-> c/ControlFlowGroup(["Control Flow"]) c(("C")) -.-> c/PointersandMemoryGroup(["Pointers and Memory"]) c(("C")) -.-> c/FunctionsGroup(["Functions"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c/BasicsGroup -.-> c/variables("Variables") c/ControlFlowGroup -.-> c/for_loop("For Loop") c/PointersandMemoryGroup -.-> c/pointers("Pointers") c/PointersandMemoryGroup -.-> c/memory_address("Memory Address") c/FunctionsGroup -.-> c/function_declaration("Function Declaration") c/UserInteractionGroup -.-> c/user_input("User Input") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/variables -.-> lab-123283{{"Asignación dinámica de memoria en el programa C"}} c/for_loop -.-> lab-123283{{"Asignación dinámica de memoria en el programa C"}} c/pointers -.-> lab-123283{{"Asignación dinámica de memoria en el programa C"}} c/memory_address -.-> lab-123283{{"Asignación dinámica de memoria en el programa C"}} c/function_declaration -.-> lab-123283{{"Asignación dinámica de memoria en el programa C"}} c/user_input -.-> lab-123283{{"Asignación dinámica de memoria en el programa C"}} c/output -.-> lab-123283{{"Asignación dinámica de memoria en el programa C"}} end

Incluir los archivos de encabezado necesarios

En este paso, incluiremos los archivos de encabezado necesarios en nuestro programa.

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

Definir la función main()

En este paso, definiremos la función main(). En esta función, declararemos las variables necesarias para el programa.

int main()
{
    int n, i, *ptr, sum = 0;

    printf("\nEnter number of elements: ");
    scanf("%d", &n);

Asignar memoria dinámicamente utilizando malloc()

En este paso, asignaremos memoria dinámicamente utilizando malloc(). El tamaño de la memoria a asignar se determina mediante el producto del número de elementos y el tamaño de cada elemento utilizando el operador sizeof().

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

if(ptr == NULL)
{
    printf("\nError! Memory not allocated.");
    exit(0);
}

Almacenar valores en la memoria asignada

En este paso, almacenaremos valores en la memoria asignada utilizando un bucle.

for(i = 0; i < n; i++)
{
    printf("\nEnter element %d: ", i + 1);
    scanf("%d", ptr + i);
    sum += *(ptr + i);
}

Imprimir los valores

En este paso, imprimiremos los valores que se han almacenado.

printf("\nElements entered are: ");
for(i = 0; i < n; i++)
{
    printf("%d ", *(ptr + i));
}

Liberar la memoria

En este paso, liberaremos la memoria asignada utilizando free().

free(ptr);

Resumen

En este laboratorio, aprendimos cómo asignar memoria dinámicamente utilizando malloc() y liberar el espacio de memoria utilizando free(). Aprendimos cómo declarar variables en la función main() y asignar memoria utilizando malloc(). También aprendimos cómo almacenar datos en el espacio de memoria asignado, imprimir los valores almacenados y luego liberar la memoria asignada utilizando free().