Diferencia entre revisiones de «malloc()»
(→Vea también) |
|||
(No se muestran 3 ediciones intermedias del mismo usuario) | |||
Línea 1: | Línea 1: | ||
== Descripción == | == Descripción == | ||
− | Asignar bloque de memoria | + | Asignar bloque de memoria. |
+ | |||
Asigna un bloque de bytes de tamaño de memoria y devuelve un puntero al principio del bloque. | 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. | 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 | + | 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. |
− | |||
− | |||
− | |||
Línea 14: | Línea 12: | ||
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 | 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 | ||
− | |||
− | |||
− | |||
Línea 27: | Línea 22: | ||
== Parámetros == | == Parámetros == | ||
;tamaño: Tamaño del bloque de memoria, en bytes. | ;tamaño: Tamaño del bloque de memoria, en bytes. | ||
− | ;size_t: es un tipo | + | ;size_t: es un tipo entero sin signo. [[unsigned int]] |
== Retorno == | == Retorno == | ||
Línea 35: | Línea 30: | ||
== Comentarios == | == 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 == | == Advertencias == | ||
+ | Nada. | ||
== Ejemplo == | == Ejemplo == | ||
Línea 60: | Línea 58: | ||
== Vea también == | == Vea también == | ||
* [[free()]] | * [[free()]] | ||
− | |||
* [[calloc()]] | * [[calloc()]] | ||
* [[realloc()]] | * [[realloc()]] |
Revisión actual del 00:52 25 jul 2019
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
Nada.
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); }