# Heap Overflow



## H3ctor (May 20, 2006)

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);


----------



## H3ctor (May 20, 2006)

Se me olvidaba poner la declaracion de tipos:

tpPila= ^TpNodo;           
    TpNodo=RECORD               
           disco:integer;       
           sig:tpPila
    END;


----------



## MaMu (May 20, 2006)

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.


----------



## H3ctor (May 21, 2006)

Gracias por tu contestación, pero no se como solucionarlo. En que parte del código esta el error?


----------

