Ver Mensaje Individual
  #3 (permalink)  
Antiguo 05/04/2007, 22:03
Avatar de Instru
Instru
 
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 6 meses
Puntos: 52
Re: listas doblemente vinculadas

Cita:
Iniciado por Mnephet Ver Mensaje
Estoy trabajando con listas y queria hacer una funcion que reserve memoria para un nuevo elemento y lo enlazase a la lista. ¿Hay algun problema por utilizar malloc dentro de una funcion?¿Se libera esa memoria una vez se retorna a main?

void NuevoNodo(struct nodo **lista, int direccion[])
{
struct nodo *cabeza;
cabeza=(struct nodo *)malloc(sizeof(struct nodo));
cabeza->siguiente=*lista;

/*Introducir los datos de la cabeza actualizada*/
cabeza->anterior=(*lista)->anterior;
cabeza->posicion[0]=(*lista)->posicion[0]+direccion[0];
cabeza->posicion[1]=(*lista)->posicion[1]+direccion[1];
(*lista)->anterior=cabeza; //enlazar la cabeza con el resto

/*Reapuntar a la cabeza*/
*lista=cabeza;

return;
}
En realidad almacenar memoria dentro de una funcion es como usar una variable static dentro de una funcion. Muy parecido, pero siempre tienes que liberarlo, tarde o temprano, asi que mas vale que no pierdas la direccion del puntero para poder liberar.

Saludos