Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Liberar memoria

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Liberar memoria Responder citando

Hola

tengo una lista de punteros global que quiero eliminar, para lo cual realizo una llamada a una función pasándole el puntero a la lista por referencia, sin embargo cuando me muevo en la lista dentro de la función que elimina, la lista global no se actualiza y al retornar aun queda el primer nodo y el puntero al siguiente apunta a algo como 00000001C

lista *p; //puntero global

eliminarLista(p); //llamada a función de eliminación

void TForm1::eliminarLista(lista *la)
{ while(la)
{ lista*aux_la=la;
la=la->sgte;
aux_la->sgte=NULL;
delete(aux_la);
aux_la=NULL;
}
}

es necesario que la eliminación de esta lista se encuentre en una función, debido a que es utilizada muchas veces en el programa

por cualquier consejo, gracias.
_________________
__CMVM
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

¡Hola!

El problema que tienes es que no estas pasando la lista por referencia, sino por valor. Por eso, lo que eliminas es una copia, no la lista original. Para pasar una lista por referencia has de poner en la llamada:

eliminarLista(&p);

Y en la función:

void __fastcall TForm1::eliminarLista(lista **la)
{
...
}

Dentro de la función, para hacer referencia a los campos de la lista debes poner:

(*la)->SigElemento;
...

Salu2. Wink
Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.