martes, 2 de junio de 2015

MEMORIAS DINAMICAS: REALLOC

Realloc realiza la misma función que malloc en memorias dinámicas pero son un poco mas caras computacionalmente. 
La función realloc intenta cambiar el tamaño de una zona de memoria previamente asignada dinamicamente copiando, si es posible, su contenido anterior.
Entonces vemos que realloc no solo cambia el tamaño de una zona especifica de la memoria, si no que si es posible copia el contenido anterior.

Debemos tener en cuenta que esta función puede modificar además el valor del puntero. Recolocando la zona de memoria reservada en otra zona de la memoria de la máquina dependiendo de la situación. Incluso una disminución en el tamaño de la memoria puede dar lugar a una recolocación del segmento de memoria.

Su forma de declaración:

void* realloc(void* ptr, size_t size);

Si el cambio de tamaño no se puede llevar a cabo entonces la función devolverá un puntero a null.

Codigo:

#include <stdio.h>
#include <stdlib.h>    ------------------> Librerías pertinentes para el código.

void main (){

   char l,*letra,*espacio; 
   int n,c=0;                     --------------------> Declaración de variables.           

   printf("Ingrese (1) para salir\n");
   
   do {
      printf("introduzca una letra ");
      scanf("%s",&l); 
      c++; 
      espacio=(char*)realloc(letra,c *sizeof(char));  ------> Declaración de realloc.
      
      if  (espacio!=NULL){   --------------> condición para saber si la memoria se encuentra 
         letra=espacio;                              llena o no.
         letra[c]=l;                 -----------------> guarda las letras ingresadas por usuario.
      }
      else
      {
         free(letra);          --------------------> libera el espacio en memoria de realloc.
      }
   
   }while (l!='1');   -------------> Se realiza las operaciones anteriores si son diferentes de 1.
                                                 
   printf("Letras ingresadas:\n"); 
   for(n=1;n<c;n++)                 -------------------> impresion de las letras digitadas hasta que se
      printf("%c ",letra[n]);                                   ingreso " 1 ".
}


En el siguiente link se encuentra el código referente a realloc para descargar:




Este es el video tutorial referente a realloc.





ESPERAMOS QUE HAYAN ENTENDIDO MUY BIEN ESTE TEMA! :D















No hay comentarios:

Publicar un comentario