malloc en C: Explicación de la asignación de memoria dinámica en C

¿Qué es malloc () en C?

malloc () es una función de biblioteca que permite a C asignar memoria dinámicamente desde el montón. El montón es un área de la memoria donde se almacena algo.

malloc () es parte de stdlib.hy para poder usarlo necesitas usar #include .

Cómo usar Malloc

malloc () asigna memoria de un tamaño solicitado y devuelve un puntero al comienzo del bloque asignado. Para mantener este puntero devuelto, debemos crear una variable. El puntero debe ser del mismo tipo que el utilizado en la sentencia malloc.

Aquí haremos un puntero a una matriz de ints que pronto será

int* arrayPtr;

A diferencia de otros lenguajes, C no conoce el tipo de datos para el que está asignando memoria; necesita ser contado. Afortunadamente, C tiene una función llamada sizeof()que podemos usar.

arrayPtr = (int *)malloc(10 * sizeof(int));

Esta declaración usó malloc para reservar memoria para una matriz de 10 enteros. Como los tamaños pueden cambiar entre computadoras, es importante usar la función sizeof () para calcular el tamaño en la computadora actual.

Cualquier memoria asignada durante la ejecución del programa deberá liberarse antes de que se cierre el programa. Para la freememoria, podemos usar la función free ()

free( arrayPtr );

Esta declaración desasignará la memoria previamente asignada. C no viene con garbage collectorotros lenguajes, como Java. Como resultado, la memoria que no se libere correctamente seguirá asignándose después de que se cierre el programa.

Antes de continuar ...

Una revisión

  • Malloc se utiliza para la asignación de memoria dinámica y es útil cuando no se conoce la cantidad de memoria necesaria durante el tiempo de compilación.
  • La asignación de memoria permite que los objetos existan más allá del alcance del bloque actual.
  • C pasa por valor en lugar de referencia. Usar malloc para asignar memoria y luego pasar el puntero a otra función es más eficiente que hacer que la función vuelva a crear la estructura.

Más información sobre programación en C:

  • El manual para principiantes de programación en C
  • Si ... la declaración else en C explicada
  • Operador ternario en C explicado