void * malloc( int longitud )
Retorna:
El puntero del bloque de memoria solicitado, o 0 si la memoria disponible no es suficiente.
Descripción:
Esta función asigna memoria dinámica, es decir, se solicita un nuevo bloque de memoria libre de la memoria para el programa.
Se requiere como parámetro la longitud del bloque de memoria que desea ocuparse, dicha longitud se define en bytes, si por ejemplo ponemos: "malloc(1)", reservaríamos un byte.
Normalmente la dirección de memoria retornada por la función malloc() se asigna a un puntero de un dato como se puede ver en el ejemplo.
int * mitabla; int contador; MAIN_PROGRAM_CDIV BEGIN_PROGRAM //... mitabla = (int *) malloc(sizeof(int) * 1000); // Solicita 1000 posiciones de memoria for (contador = 0; contador < 1000; contador++) // Accede a los datos mitabla[contador] = -1; free(mitabla); // Libera la memoria ocupada por la tabla END_PROGRAM
Este pequeño ejemplo muestra como se puede definir un puntero a una tabla (con el puntero no se reserva espacio para los datos de la tabla), se debe solicitar memoria con la función malloc().
Una vez solicitada la memoria para la tabla de datos se accede a los mismos (se inicializan a -1, en el ejemplo), y se libera la memoria.
Los bloques de memoria que no se liberen con la función free(), NO serán liberados automáticamente por el sistema al finalizar el programa, tenga especial cuidado al llamar esta función siempre debe liberar la memoria.
Ver: free()