Mi Turbo Pascal se ha rebelado
Publicado por Roberto Garcia Garcia (41 intervenciones) el 15/04/2005 05:16:56
Hola, no se si es que realmente ya se me olvido todo eso de los punteros o es que mi Compilador (que no creo) se haya vuelto loco.
Se supone que la siguiente instruccion
aux : = nil ;
No destruye los datos de la celda de memoria a donde apunta aux, solo hace que aux no apunte a ninguna celda de memoria.
Por lo tanto
L : = aux ;
aux : = nil ;
deja los datos disponibles para L, pero ya no pueden acceder con aux
y has ahi todo bien
pero si yo hago esto
new ( aux);
aux ^. dato : = 'a' ;
aux ^. sig : = Nil ;
L : = aux;
dipose ( aux );
Se supone que los datos de la celda de memoria se destruyen y ya no es posible acceder a ellos ni por L ni por Aux, pero veo con asombro que si puedo hacer referencia tanto a L como a aux que es lo mas sorprendente, despues del dispose yo puedo hacer esto
write ( L ^.dato ) ;
write (aux ^ . dato ) ;
Y me esperaba un error, pero resulta que si escribe los datos que "tenian", si alguien podria hacerme favor de explicarme que pasa aqui el programa que hice para esta prueba, si no cabe aqui, lo pongo en otro mensaje
Se supone que la siguiente instruccion
aux : = nil ;
No destruye los datos de la celda de memoria a donde apunta aux, solo hace que aux no apunte a ninguna celda de memoria.
Por lo tanto
L : = aux ;
aux : = nil ;
deja los datos disponibles para L, pero ya no pueden acceder con aux
y has ahi todo bien
pero si yo hago esto
new ( aux);
aux ^. dato : = 'a' ;
aux ^. sig : = Nil ;
L : = aux;
dipose ( aux );
Se supone que los datos de la celda de memoria se destruyen y ya no es posible acceder a ellos ni por L ni por Aux, pero veo con asombro que si puedo hacer referencia tanto a L como a aux que es lo mas sorprendente, despues del dispose yo puedo hacer esto
write ( L ^.dato ) ;
write (aux ^ . dato ) ;
Y me esperaba un error, pero resulta que si escribe los datos que "tenian", si alguien podria hacerme favor de explicarme que pasa aqui el programa que hice para esta prueba, si no cabe aqui, lo pongo en otro mensaje
Valora esta pregunta


0