Heap Overflow

#1
Buenas tengo un problema en un programa en pascal, concretamente en el procedimiento de apilar, en una pila dinamica. En la primera ejecución del algoritmo me da el error de heap overflow, al hacer la reserva de memoria para la varia puntero new(p). Aquí os dejo el código , espero que sepais el fallo, gracias:

Procedure Apilar(var pila:tpPila; disco:integer;t1,t3,t2:char);
Var punt:tpPila;
Begin
new(punt);
punt^.sig:=pila;
punt^.disco:=disco;
pila:=punt

End;
Me falla en este punto:

Procedure X (var f:text; n:integer; ori,dest,aux:char);
var pila:tpPila;
Begin
Iniciapila(pila);
Apilar(pila,n,ori,dest,aux);
 
#2
Se me olvidaba poner la declaracion de tipos:

tpPila= ^TpNodo;
TpNodo=RECORD
disco:integer;
sig:tpPila
END;
 
#3
El error es que armas una pila creciente, cuando debe ser decreciente, es decir crecimiento invertido, por lo que se sobre pasa y genera el over flow, salvo que definas en el encabezado del programa el espacio y direccion de memoria utilizada.

Saludos.
 
Arriba