Error
Publicado por Miguel (159 intervenciones) el 24/09/2008 03:18:30
Bueno, estaba trabajando con lista simplemente encadenada y me encuentro con este error que me lo tira en FREE. "program recieved signal sigsegv segmentation fault".
Me las tira en varias partes del programa, así que les dejo la declaración y un ejemplo de donde me lo tira.
TYPE
TEmpleado = RECORD
nombre : STRING[20];
telefono : STRING[10];
direccion : STRING[20];
edad : INTEGER
END;
TNodo = ^TElem;
TElem = RECORD
info : TEmpleado;
next : TNodo;
END;
VAR
puntero : TNodo;
PROCEDURE AvElem (VAR punt : TNodo);
BEGIN
punt:=punt^.next;
END;
PROCEDURE CargaPers (VAR elemento : TEmpleado);
BEGIN
WRITE('Ingrese el nombre del empleado: ');
READLN(elemento.nombre);
WRITE('Ingrese el telefono del empleado: ');
READLN(elemento.telefono);
WRITE('Ingrese la direccion del empleado: ');
READLN(elemento.direccion);
WRITE('Ingrese la edad del empleado: ');
READLN(elemento.edad)
END;
PROCEDURE CargarSec (VAR p : TNodo);
VAR
q,x : TNodo;
preg : STRING[1];
elem : TEmpleado;
BEGIN
CLRSCR;
x:=p^.next;
preg:='S';
WHILE Upcase(preg)<>'N' DO
BEGIN
CLRSCR;
NEW(q);
CargaPers(elem);
q^.info:=elem;
q^.next:=x^.next; { aca me tira el error, por ejemplo }
x^.next:=q;
WRITE('¿Desea ingresar otro empleado? (S/N): ');
READLN(preg)
END;
END;
El programa compila pero si lo ejecuto, se clava ahí. Yo compilo con DEV, pero le hice un TRACE en FREE y justo ahí me larga ese cartel.
Bueno si alguien me puede ayudar se agradece de ante mano.
Me las tira en varias partes del programa, así que les dejo la declaración y un ejemplo de donde me lo tira.
TYPE
TEmpleado = RECORD
nombre : STRING[20];
telefono : STRING[10];
direccion : STRING[20];
edad : INTEGER
END;
TNodo = ^TElem;
TElem = RECORD
info : TEmpleado;
next : TNodo;
END;
VAR
puntero : TNodo;
PROCEDURE AvElem (VAR punt : TNodo);
BEGIN
punt:=punt^.next;
END;
PROCEDURE CargaPers (VAR elemento : TEmpleado);
BEGIN
WRITE('Ingrese el nombre del empleado: ');
READLN(elemento.nombre);
WRITE('Ingrese el telefono del empleado: ');
READLN(elemento.telefono);
WRITE('Ingrese la direccion del empleado: ');
READLN(elemento.direccion);
WRITE('Ingrese la edad del empleado: ');
READLN(elemento.edad)
END;
PROCEDURE CargarSec (VAR p : TNodo);
VAR
q,x : TNodo;
preg : STRING[1];
elem : TEmpleado;
BEGIN
CLRSCR;
x:=p^.next;
preg:='S';
WHILE Upcase(preg)<>'N' DO
BEGIN
CLRSCR;
NEW(q);
CargaPers(elem);
q^.info:=elem;
q^.next:=x^.next; { aca me tira el error, por ejemplo }
x^.next:=q;
WRITE('¿Desea ingresar otro empleado? (S/N): ');
READLN(preg)
END;
END;
El programa compila pero si lo ejecuto, se clava ahí. Yo compilo con DEV, pero le hice un TRACE en FREE y justo ahí me larga ese cartel.
Bueno si alguien me puede ayudar se agradece de ante mano.
Valora esta pregunta


0