Ver Mensaje Individual
  #4 (permalink)  
Antiguo 26/03/2012, 20:27
cesar_casla
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 4 meses
Puntos: 94
Respuesta: Como asignar que un puntero apunta a otro puntero

Hola! Primero la segunta pregunta: es correcto la forma de como lo pensas. De esa manera estarias almacenando en registro el contenido de lo apuntado por puntero

Ahora la primera: la asignacion que vos haces, puntero1=puntero2, es erronea si a puntero2 no le asignas nada antes. Siempre a un puntero hay q asignarle algo antes de utilizarlo, es decir a puntero2 antes habria que asignarle algo y recien podrias hacer puntero1=puntero2;

La funcion free se utiliza para liberar bloques de memorias que fue asignada dinamicamente, osea con funciones como malloc, realloc o calloc. En tu ejemplo si puntero1 o puntero2 en ningun momento se le asigno memoria dinamicamente no se puede utilizar free.
Fijate que en el ejemplo que te di anteriormente en ningun momento use free ya que no use malloc,realloc o calloc

Te doy un ejemplo sencillo que utiliza memoria dinamica(con malloc) y libera esa memoria con free
Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. struct PRUEBA {
  4.    int num;
  5. };
  6. int main(void) {
  7.    struct PRUEBA *prueba;
  8.    prueba=malloc(sizeof(struct PRUEBA)); // le digo a prueba q apunte al bloque de memoria que devuelve malloc
  9.    scanf("%d",&prueba->num);
  10.    printf("El numero ingresado es: %d\n",prueba->num);
  11.    //libero el bloque de memoria a donde apunta prueba
  12.    free(prueba);
  13.    return 0;
  14. }

Conclusion: "al hacer free se me borra el dato o la vinculación y la memoria dinámica se pone disponible para otro dato?" SI
"struct Prueba *puntero1, struct Prueba *puntero2; puntero1=puntero2 free(puntero1); en ese caso el puntero2 quedaría inutilizado no?" NO, el puntero2 se puede utilizar para otra cosa; NO QUEDA INUTILIZADO

Espero no habert confundido :S, Saludos

Última edición por cesar_casla; 26/03/2012 a las 20:43