• Martes 12 de Noviembre de 2024, 20:55

Autor Tema:  Liberar el puntero de un puntero  (Leído 1414 veces)

dvspeed

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Liberar el puntero de un puntero
« en: Domingo 3 de Octubre de 2010, 12:57 »
0
Hola, mi pregunta es que si tengo un puntero apuntando a otros dos punteros, si libero el primer puntero con free, los otros dos se liberarán o tengo que liberarlos todos uno a uno.

alb

  • Nuevo Miembro
  • *
  • Mensajes: 24
    • Ver Perfil
Re: Liberar el puntero de un puntero
« Respuesta #1 en: Domingo 3 de Octubre de 2010, 22:50 »
0
Bueno,
A cada malloc tiene que corresponder un free. Poco importa si un puntero apunta a otros punteros o a otra cosa.

dvspeed

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Liberar el puntero de un puntero
« Respuesta #2 en: Domingo 3 de Octubre de 2010, 23:02 »
0
Ok, vamos que tengo que ir haciendo free uno por uno, gracias.

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Liberar el puntero de un puntero
« Respuesta #3 en: Domingo 3 de Octubre de 2010, 23:08 »
0
Como bien dice el compañero, por cada malloc, debe de haber un free.

Yo añadiria ademas que por lo regular al liberar punteros, se deben liberar en order inverso a como fueron creados, no es obligatorio, pero si recomendado, ejemplo:

Código: C++
  1.  
  2.     int *puntero1, *puntero2, *puntero3;
  3.  
  4.     puntero1 = (int*) malloc(sizeof(int));
  5.     puntero2 = (int*) malloc(sizeof(int));
  6.     puntero3 = (int*) malloc(sizeof(int));
  7.  
  8.  
  9.     free(puntero3);
  10.     free(puntero2);
  11.     free(puntero1);
  12.  
  13.  

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================