 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Claudio Ens

Registrado: 18 Ago 2002Mensajes: 31Ubicación: Santigo, CHILE
|
Publicado: Dom 26 Ene, 2003 11:42 pm Asunto: Liberar memoria |
|
|
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 |
|
 |
tecno Invitado
|
Publicado: Lun 27 Ene, 2003 3:36 pm Asunto: |
|
|
¡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.  |
|
| Volver arriba |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|