En la programación C, cuando ejecutamos un programa, ocupa algo de memoria en el sistema. Si usamos la memoria estática, tenemos que asignar un bloque de memoria fijo del sistema, luego, después de la ejecución del programa, pueden ocurrir dos escenarios; El programa necesitará un tamaño de bloque más grande que el tamaño declarado o necesitará el bloque de memoria de tamaño más pequeño. Si el bloque de memoria se vuelve menos para el programa ejecutado, los resultados no serán precisos y si el tamaño del bloque es mayor para el programa ejecutado, entonces la memoria libre restante del bloque no es útil.
Para evitar esto, se prefiere usar la memoria dinámica en la programación C que tiene diferentes tipos de funciones.
¿Qué es una función malloc () en la programación C?
En la programación C, si usamos la memoria estática, no podemos cambiar el tamaño de la memoria durante la ejecución del programa. Es una práctica recomendada usar memoria dinámica en la programación C para que el tamaño de la memoria se pueda alterar durante la ejecución del programa.
Para el uso de la memoria dinámica, tenemos que incluir un archivo de encabezado "Stdlib.H ", que incluye todas las funciones de la memoria dinámica. El malloc () también es miembro de stdlib.H Biblioteca y se utiliza para asignar memoria al programa ejecutado. Cuando se llama a una función malloc () en un programa, envía una solicitud al montón del sistema, que asigna el bloque de memoria solicitado a la función malloc () o devolverá un valor nulo si no hay espacio suficiente en el montón.
El MALLOC () solicita el bloque de memoria de acuerdo con la necesidad del programa ejecutado y cuando el programa se ejecuta correctamente, podemos devolver el bloque de memoria al montón utilizando la función Free (), por lo que puede usarse para la ejecución de otras instrucciones.
La sintaxis general de la función malloc () es:
ptr_name = (Cast-type*) malloc (tamaño);La explicación de la sintaxis anterior es simple:
Para una mejor comprensión, consideraremos un ejemplo, crearemos un archivo con el nombre de mal_txt.C y escriba el siguiente script:
#incluirPara compilar el mal_txt.Cile C, usamos el compilador GCC:
$ GCC MAL_TXT.c -o mal_txtUna vez que el archivo se compila correctamente sin ningún error, ejecute el código usando el comando:
ps ./mal_txtEn el código anterior, estamos creando la matriz e imprimiendo la suma de los elementos de la matriz. Una explicación detallada del programa anterior es:
¿Qué es una función RealLoc () en la programación C?
Otra función de la memoria dinámica es la función RealLoc (), se usa para modificar el bloque de memoria asignado a la función MALLOC (). La función MALLOC () como se discutió anteriormente solicita un bloque de memoria desde el montón, pero para modificar el tamaño del bloque de memoria, por lo que utilizamos la función RealLoc () en lugar de eliminar todo el bloque de memoria y redecar el nuevo bloque de memoria manualmente.
La función RealLoc () es la forma breve de "Reaslocación de la memoria" y se utiliza para cambiar el tamaño del tamaño del bloque de memoria asignado por la función Heap a MALLOC () o Calloc (). No perturba el contenido original del bloque de memoria y solicita el nuevo bloque de memoria desde el montón y copia todos los datos del bloque de memoria anterior al nuevo bloque de memoria sin perturbar ningún contenido de él.
La sintaxis general del uso de la función RealLoc () es:
$ PTR = REALLOC (PTR, Newsize);La explicación de la sintaxis anterior es:
Nuevamente crearemos un archivo, Real_file.C, y escriba el código en él para una mejor comprensión del uso de la función RealLoc ():
#incluirAhora compile el real_file.c usando el compilador GCC:
$ GCC real_file.c -o real_fileSi el archivo se compila correctamente, ejecute el programa usando el comando:
ps ./Real_FileLa explicación del script anterior es:
Conclusión
En la programación C, la asignación de memoria dinámica es la asignación manual de la memoria de acuerdo con el requisito del programa. Las funciones MALLOC () y REALLOC () son parte de la memoria dinámica; MALLOC () se usa para la asignación de memoria y REALLOC () se usa para la reasignación de la memoria. En este artículo, hemos explicado ambos; MALLOC () y las funciones de reasloc (), cómo funcionan y cuál es la sintaxis general de usar ambos. Finalmente, para una mejor comprensión, ejecutamos los ejemplos de ambas funciones.