La forma más habitual de C para obtener bloques de memoria es mediante la llamada a la función
rnalloc ( ) . La función asigna un bloque de memoria que es el número de bytes pasados como
argumento. malloc ( ) devuelve un puntero, que es la dirección del bloque asignado de memoria. El
puntero se utiliza para referenciar el bloque de memoria y devuelve un puntero del tipo void*. La forma
de llamar a la función malloc ( ) es:
puntero = malloc(tamaño en bytes);
Generalmente se hará una conversión al tipo del puntero:
tipo *puntero;
puntero =(tipo *)malloc(tamaño en bytes);
Por ejemplo:
long* p;
p = (long") malloc(32);
El operador unario sizeof se utiliza con mucha frecuencia en las funciones de asignación de
memoria. El operador se aplica a un tipo de dato (o una variable), el valor resultante es el número de
bytes que ocupa. Así, si se quiere reservar memoria para un buffer de 10 enteros:
int *r;
r = (int*) rnalloc(lO*sizeof(int)) ;
Al llamar a la función mailoc ( ) puede ocurrir que no haya memoria disponible, en ese caso
malloc ( ) devuelve NULL.
Sintaxis de llamada a meilloc ( )
tipo *puntero;
puntero = (tipo*)malloc (tamaño) ;
La función devuelve la dirección de la variable signada dinámicamente, el tipo que devuelve es void.
Prototipo que incluye malloc ( 1
void* malloc(size-t n);
En la sintaxis de llamada puntero es el nombre de la variable puntero a la que se asigna la dirección del objeto dato, o se le asigna la dirección de memoria de un bloque lo suficientemente grande para
contener un array de n elementos, o NULL, si falla la operación de asignación de memoria. El siguiente
código utiliza malloc ( ) para asignar espacio para un valor entero:
int *pEnt;
pEnt = (int*) rnalloc(sizeof(int));
La llamada a malloc ( ) asigna espacio para un int (entero) y almacena la dirección de la
asignación en pEnt . pEnt apunta ahora a la posición en el almacén libre (montículo) donde se
establece la memoria. La Figura 10.3 muestra como pEnt apunta a la asignación del almacén libre. Así,
por ejemplo, para reservar memoria para un array de 1 00 números reales:
. . .
float "BloqueMem;
BloqueMern = (float") rnalloc(100*sizeof(float));
En el ejemplo se declara un puntero denominado BloqueMern y lo inicializan a la dirección devuelta
por malloc ( ) . Si un bloque del tamaño solicitado está disponible, malloc ( ) devuelve un puntero al
principio de un bloque de memoria del tamaño especificado. Si no hay bastante espacio de
almacenamiento dinámico para cumplir la petición, malloc ( ) devuelve cero o NULL. La reserva de n
caracteres se puede declarar así:
int n;
char *s;
scanf ( "%d" , &n) ;
s = (char*) rnalloc(n*sizeof(char));
Descarga Libros en c y c++ https://mega.nz/folder/ZckjDaLR#v5Bgwuv3ypM8uxOoKw90Wg
Comentarios
Publicar un comentario
Hola que tal,dime tu opinión