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().