Función malloc en c

Función malloc en c

“Dentro del lenguaje C, la asignación de memoria es un concepto muy conocido, y tenemos muchas funciones para asignar recuerdos a diferentes mutables, yo.mi., memoria dinámica, memoria estática, etc. La función malloc () de C es una de esas funciones que no solo asigna la memoria a un mutable específico, sino que también devuelve un puntero de dirección donde se ha almacenado esa memoria. Este artículo lo ayudará con el uso de Malloc en C mientras usa Ubuntu 20.04 sistema. Haga su sistema actualizado antes de saltar en la implementación del código C porque lo ayudará a ejecutar sin problemas sus códigos en el shell. Por lo tanto, lo hemos actualizado hasta ahora, y nos pidió que agregaramos la contraseña para el usuario que actualmente está funcionando. Le proporcionamos una contraseña, y el proceso se terminó en unos segundos."

Vamos a implementar este artículo en el lenguaje C; Por lo tanto, requerimos que su compilador se instale en nuestro extremo. Linux tiene la utilidad "GCC" C como un compilador que se puede instalar con "apt", como lo hicimos en la imagen mostrada. Ahora, puede hacer que su error de código sea gratuito en segundos.

Antes de comenzar con nuestro ejemplo de C, debe haber un archivo en el que agregamos los códigos C para la compilación y la ejecución. Por lo tanto, estamos creando un archivo "archivo.C". El archivo debe tener un ".Extensión C ”en sus extremos para identificarlo como un archivo C.

Ejemplo 01

Dentro de esta ilustración de código, utilizaremos la función malloc () para asignar la memoria a una variable utilizando algún valor constante y visualización si la memoria se ha asignado correctamente o no. Tenemos que iniciar este código C con los encabezados de la biblioteca C principal que deben tener en un código, y sin estos, nuestro código sería inútil para ejecutar. El código contiene una función main () que va a realizar todo lo que necesitamos para la asignación de memoria y el error que se muestra si la memoria no se asigna correctamente. La función comienza desde la inicialización de una variable entera constante "A" como vacía.

Hemos especificado una variable de doble puntero de tipo largo "V" para asignar la memoria utilizando la función MALLOC (). Esta función malloc () utiliza la variable entera constante "A" para la asignación de memoria al puntero "M."Hay una declaración" if-else "utilizada para verificar si la memoria se asignó a la variable de puntero" M "o no pudo asignar la memoria. Entonces, es la parte "si" la que verificaría si el valor de "m" es nulo o no. Si es "nulo", la función printf () utilizada dentro de ella demostrará un mensaje de error, i.mi., "Sin memoria" con una ruptura de línea en su extremo usando el "\ n."

Además, la instrucción de función "Salir (-1)" terminará. Mientras que la parte del otro estaría usando 2 declaraciones de función printf (), yo.mi., La primera declaración para mostrar el valor de una variable entera constante "A" y la segunda declaración para mostrar el mensaje de éxito con la memoria especificada. Guardemos nuestro código antes de que lo haga compilarse el código fuente para la ejecución.

#incluir
#incluir
int main ()
const int a = "";
largo doble *m = (largo doble *) malloc (sizeOf (doble doble) *a);
if (m == null)
printf ("Error: sin memoria \ r \ n");
salida (-1);
demás
printf ("valor = %d \ n", a);
printf ("Genial, memoria: %lf \ n", *m;

En la compilación, mostró algunas advertencias, pero podemos ignorarlas por un momento. En la ejecución del código compilado, recibimos un mensaje de error "sin memoria" porque no habíamos inicializado ningún valor entero a la variable "A" para la asignación de memoria.

Estamos actualizando el mismo código fuente agregando un valor entero "500" para una variable "A" para que podamos asignar una memoria exacta a una variable de puntero "M."Guarde este código actualizado por ahora.

#incluir
#incluir
int main ()
const int a = 500;
largo doble *m = (largo doble *) malloc (sizeOf (doble doble) *a);
if (m == null)
printf ("Error: sin memoria \ r \ n");
salida (-1);
demás
printf ("valor = %d \ n", a);
printf ("Genial, memoria: %lf \ n", *m;

Al compilar este código actualizado, no recibimos errores, ni siquiera una advertencia que se mostró antes. Después de la ejecución de este código compilado y actualizado, obtuvimos el valor de la variable "A" que se muestra junto con la memoria asignada en puntos decimales, I.mi., No muestra un valor de memoria exacto.

Ejemplo 02

Echemos un buen vistazo a otro ejemplo para asignar la memoria a una variable específica. Por lo tanto, comience este ejemplo con el uso de "stdio.h "y" stdlib.H "encabezados antes que cualquier otra cosa. El método main () obtuvo su ejecución de la declaración de una variable "A" de tipo de personaje. La siguiente línea usa la función malloc () para crear una memoria para un puntero de caracteres del tamaño 10. Esta es una asignación de memoria inicial para el puntero "A."

Después de esto, la función strcpy () está aquí para copiar una cadena de palabras a un puntero variable "a."El uso de printf () es imprescindible para mostrar nuestro valor de cadena acaba de guardar en el puntero variable" A "junto con su dirección de memoria en el shell. El carácter especial "%s" denota el valor de la cadena, mientras que el "%u" denota la dirección que se exhibirá. Después de esto, estamos reasignando una nueva memoria a la misma variable de puntero de tipo de personaje "A" del tamaño 20 utilizando la función RealLoc () del lenguaje C. Hay un uso de la función strcat () para concatenar un puntero variable "a" con un nuevo valor de cadena "lenguaje"."

Después de esto, utilizamos nuevamente la instrucción printf () para mostrar el valor de cadena recientemente concatenado junto con la dirección de un puntero variable "A."Después de esto, probamos la función" gratuita "en el puntero variable" A "para liberar la memoria asignada. Primero guardemos este código y luego probemos el compilador GCC en el shell para compilarlo rápidamente.

#incluir
#incluir
int main ()
char *a;
A = (char *) malloc (10);
strcpy (A, "Bienvenido a C");
printf ("valor = %s, dirección: %u \ n", a, a);
strcat (a, "idioma");
printf ("valor = %s, dirección: %u \ n", a, a);
gratis (a)

Ahora, vamos a compilar nuestro código con "GCC" como se presenta debajo. Aunque el uso de la función "strcpy" muestra una advertencia, no nos impide ejecutar el código.

Después de compilar el archivo.Archivo C C, lo hemos ejecutado en la aplicación de la consola con el "./a.Out ”consulta de Linux para ejecutar los archivos de código. Verá una salida de dos líneas que muestran dos valores diferentes para un puntero variable "A" pero la misma dirección, I, i.mi., Valores antiguos y actualizados. Esto significa que la memoria asignada se actualizó, pero la dirección sigue siendo la misma para una variable "a."

Conclusión

Eso es todo! Ahora, podrá crear sus códigos para asignar memoria a alguna variable específica en su sistema utilizando la función MALLOC () de C.