malloc()

En la entrada pasada (sobre programación) explique un poco de teoría y uso de punteros, ahora, vamos a aprender a usar básicamente malloc()

Que carajos es malloc()?

Junto con calloc(), realloc() y free() son herramientas para gestión manual de memoria en C, están en la biblioteca stdlib.h, la forma de usar malloc() es la siguiente

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

Lo que devuelve malloc() es un puntero que apunta al inicio del bloque de memoria reservado

Vamos a ver un código de ejemplo

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

int main(int argc, char *argv[])
{
int *ip,i;

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

for (i = 0; i<10 ; ++i)
{
printf ("\nIngrese un numero: ");
scanf("%i",ip);
printf ("La posicion de memoria reservada es: %p y vale %i\n",(int *) ip,*ip);
ip++;
}

free(ip-i);

return 0;
}

En si, en este programa reserva un espacio de memoria de 10 enteros y luego los trata como si fuera un array … vale decir que esto es una guainada, no tiene sentido hacer algo así, pero es todo a modo de ejemplo, y al final del código con free() liberamos el espacio que reservamos, para así evitar fuga de memoria, esto es normalmente conocido como “recolección de basura”

Después de compilar el programa y ejecutarlo, vemos que hace

Ingrese un numero: 12
La posicion de memoria reservada es: 0x9d11008 y vale 12

Ingrese un numero: 23
La posicion de memoria reservada es: 0x9d1100c y vale 23

Ingrese un numero: 56
La posicion de memoria reservada es: 0x9d11010 y vale 56

Ingrese un numero: 15
La posicion de memoria reservada es: 0x9d11014 y vale 15

Nada raro, era solamente una introducción básica a malloc() y free().

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s