| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Claudio Ens

Registrado: 18 Ago 2002Mensajes: 31Ubicación: Santigo, CHILE
|
Publicado: Mar 04 Mar, 2003 4:44 am Asunto: Punteros |
|
|
Hola amigos
tengo algunas dudas con repsecto al mejo de punteros
por ejemplo si tengo una lista simple llamada ListaNumeros que es global y del tipo MiLista y realizo la siguiente operación
MiLista *ListaNumeros; //declaración global
int TForm1::BuscarMenor(void)
{ MiLista *aux=ListaNumeros
while(aux)
{
//proceso para buscar el menor
aux=aux->next;
}
}
mi duda es la siguiente, el puntero aux solo apunta a una dirección, es necesario liberarlo para liberar la memoria.
y segundo
void TForm1::Agregar(void)
{ MiLista *nuevo=new MiLista;
if(ListaNumeros==NULL)
{
ListaNumeros=nuevo;
ListaNumeros->next=NULL;
}else
{ nuevo->next=ListaNumeros;
ListaNumeros=nuevo;
numero->next=NULL;
}
}
mi duda es que si declare el puntero nuevo para agregarlo a la lista, una vez agregado es necesario liberar el puntero nuevo
por cualquier consejo gracias _________________ __CMVM |
|
| Volver arriba |
|
 |
nuno Cmdr

Registrado: 10 Feb 2003Mensajes: 143Ubicación: Córdoba - Argentina
|
Publicado: Mie 05 Mar, 2003 5:00 am Asunto: |
|
|
hola claudio veo que tenes un par de conceptos herrados.
en primer lugar cuando declaras un puntero es para usarlo, y una vez echo esto cuando lo desrreferencias(cuando lo dejas de usar)la memoria se libera sola.
en segundo el puntero al nuevo no lo debes borrar debido a que ese nodo se encadena a la lista y lo brras perdes todos los nodos siguienters en la lista.
espero que te sirva de todas maneras me gustaria saber si lo que estas implementando lo haces con una clase o con una estructura. |
|
| Volver arriba |
|
 |
Jhon1 Invitado
|
Publicado: Mie 05 Mar, 2003 5:09 am Asunto: ... |
|
|
Hola, no debes liberar el apuntador Aux, pues si lo haces estarias borrando el ultimo elemento de la lista, pues Aux recorre toda la lista hasta llegar al ultimo nodo de la misma, y tampoco debes liberar el Nuvo nodo(Nuevo), pues lo estarias eliminando de la lista.
Cuando ya no necesites la lista debes liberarla nodo a nodo.
Espero haberte ayudado.
Saludos. |
|
| Volver arriba |
|
 |
|