Cómo liberar memoria con la función malloc () en la programación c

Aquí hay un secreto: Declarar una variable en la programación C es, en realidad, dirigir el programa a pedir un poco de espacio de almacenamiento del sistema operativo. Como ya saben (es de esperar, ya sabes), el sistema operativo es el señor High Maestro de la computadora o cualquier dispositivo electrónico está programando. Como tal, se reparte RAM para los programas que lo soliciten.

Video: Memoria Dinamica y Funciones Malloc, Calloc, Realloc y Free | CodigoEnC.com

Cuando se declara una variable, desde un short int humilde a un búfer de cadena masiva, que está dirigiendo el programa para pedir que mucho espacio, en el que se va a poner algo útil. En el lenguaje C, también se puede asignar memoria sobre la marcha, siempre y cuando usted tiene un ejército de punteros a mano para guardar las direcciones.

Conceptos básicos de la malloc () función

La función malloc () existe para saciar las ansias de memoria de su programa. Darle un puntero, y malloc () asigna memoria (conseguirlo?) En un determinado tamaño para almacenar un determinado tipo de variable. Aquí está el formato:

pag = (tipo *) Malloc (tamaño) -

tipo es un encasillado, dirigiendo malloc () para asignar un trozo de memoria dimensionado para almacenar la cantidad adecuada de la información para el tipo de variable dada.

tamaño es la cantidad de almacenamiento que se necesita. Se mide en bytes, pero hay que tener cuidado de asignar almacenamiento suficiente para acomodar el tipo de variable. Por ejemplo, si necesita más espacio para almacenar un valor entero, que necesita para crear suficiente espacio de almacenamiento en la que se ajusta a un valor int. Ese número de bytes se calcula tradicionalmente mediante el operador sizeof.

La función malloc () devuelve la dirección de la cantidad de memoria que está asignada. La dirección se almacena en el puntero P, que debe coincidir con el tipo de variable. Cuando la memoria no puede ser distribuido, se devuelve un valor NULL.

Debe comprobar la NULL antes de utilizar la memoria asignada! Si no lo hace, su programa se reunirá con cierto peligro.

Por último, es necesario incluir el archivo de cabecera stdlib.h en el código fuente para mantener el compilador satisfecho con la función malloc (). Dame espacio muestra un ejemplo.

DAME SPACE

#include #include int () {int * edad-edad = (int *) malloc principal (sizeof (int) * 1) -Si (edad == NULL) {puts ("No se puede asignar memoria") -exit (1) -} printf ("Cuantos años tienes? ") -scanf ("%re", Edad) -printf ("Estás% d años old.n", * Edad) -Retorno (0) -}

La primera cosa a notar sobre Dame espacio es que la única variable declarada es un puntero, edad. Una variable int no se define, aunque el programa acepta la entrada int y muestra int salida.

Video: 85. Programación en C - Memoria Dinámica - Uso de free en C

La línea 8 utiliza malloc () para establecer un lado un almacenamiento de un número entero. Para asegurarse de que se asigna la cantidad adecuada de almacenamiento, se utiliza el operador sizeof. Para asignar espacio para un número entero, el valor de 1 se multiplica por el resultado de la operación sizeof (int). (Ese proceso es innecesario en este punto, sino que entra en juego más adelante.) La dirección de que el almacenamiento se guarda en el puntero de edad.

Línea 9 pruebas para asegurar que malloc () fue capaz de asignar memoria. Si no, el valor devuelto es NULL (que es una constante definida en stdlib.h), y el programa mostrará un mensaje de error (referirse a la línea 11) y deja de (se refiere a la línea 12).

Se dará cuenta de que la función scanf (), en la línea 15 no utiliza el & prefijo. Esto se debe a la años variable es una dirección de memoria - es un puntero! No es necesario el & en ese caso (del mismo modo que no es necesario el & para una cadena leído por la función scanf ()).

Por último, la notación peeker se utiliza en la línea 16 para visualizar el valor de entrada.

Ejercicio 1: Pon en marcha un nuevo proyecto utilizando el código fuente de la Dame espacio. Generar y ejecutar.

Ejercicio 2: Utilizando me da espacio como su inspiración, escribir un programa que pide la temperatura actual exterior como un valor de punto flotante. Tener el código de preguntar si la entrada es grados Celsius o Fahrenheit. Utilizar malloc () para crear almacenamiento para la entrada de valor. Mostrar la temperatura resultante en Kelvin. Aquí están las fórmulas:

kelvin = Celsius + 273.15-kelvin = (Fahrenheit + 459.67) * (5,0 / 9,0) -

exercise 3: Escribir un programa que asigna espacio para tres valores int - una matriz. Es necesario utilizar la función de un solo malloc () para realizar esta tarea. Asignar 100, 200, y 300 a cada int, y luego mostrar los tres valores.

Video: 83. Programación en C - Memoria Dinámica - Ejercicio reservar memoria con malloc para un nombre

Cómo crear almacenamiento de cadenas

La función malloc () se utiliza comúnmente para crear una memoria intermedia de entrada. Esta técnica evita declarar y dimensionamiento de una matriz vacía. Por ejemplo, la notación

entrada char [64] -

puede ser sustituida por la siguiente declaración:

char * input-

El tamaño de la memoria intermedia se establece en el código mediante el uso de la función malloc () .En Asignación de un búfer de entrada, la función malloc (), en la línea 8 declara una matriz de caracteres - un tampón de almacenamiento - por cerca de 1.024 bytes. Está bien, es un kilobyte (KB).

Video: 81. Programación en C - Concepto de memoria estática y dinámica

Asignación de una memoria intermedia de entrada

#incluir 
#incluir
int main ()
{
char * input-
entrada = (* char) malloc (sizeof (char) * 1024) -
si (entrada == NULL)
{
pone("No se puede asignar memoria intermedia! ¡Oh no!") -
de salida (1) -
}
pone("Escribir algo largo y aburrido:") -
fgets (entrada, 1023, stdin) -
pone("Tu escribiste:") -
printf ("% s"norte"
Artículos Relacionados