malloc()
Contenido
Descripción
Asignar bloque de memoria.
Asigna un bloque de bytes de tamaño de memoria y devuelve un puntero al principio del bloque.
El contenido del bloque de memoria recién asignado no se inicializa, permaneciendo con valores indeterminados.
Si el tamaño es cero, el valor de retorno depende de la implementación de la biblioteca en particular (puede o no ser un puntero nulo), pero el puntero devuelto no debe el[[iminarse.
Este programa genera una cadena de la longitud especificada por el usuario y la rellena con caracteres alfabéticos. La longitud posible de esta cadena solo está limitada por la cantidad de memoria disponible paramalloc
Sintaxis
malloc();
Parámetros
- tamaño
- Tamaño del bloque de memoria, en bytes.
- size_t
- es un tipo entero sin signo. unsigned int
Retorno
- En caso de éxito, un puntero al bloque de memoria asignado por la función.
El tipo de este puntero es siempre void*, que se puede convertir al tipo de puntero de datos deseado para que no se pueda distinguir.
- Si la función no pudo asignar el bloque de memoria solicitado, se devuelve un puntero nulo.
Comentarios
- Solo se modifica el almacenamiento al que hace referencia el puntero devuelto. No se accede a ninguna otra ubicación de almacenamiento mediante la llamada.
- Si la función reutiliza la misma unidad de almacenamiento liberada por una función de desasignación (comogratis o realloc()), las funciones se sincronizan de tal manera que la desasignación ocurre completamente antes de la siguiente asignación.
Advertencias
Ejemplo
byte funcion(){ int i,n; char * buffer; printf ("How long do you want the string ?"); scanf ("%d", &i); buffer = (char*) malloc(i+1); if (buffer==NULL){ exit (1); } for (byte n=0; n<i; n++){ buffer[n]=rand()%26+'a'; } buffer[i]='\0'; printf ("Random string: %s\n", buffer); free (buffer); }