Hola djanp,
Asegúrate de que estás liberando la memoria de todo objeto que creas.
Y si estás usando estructuras dinámicas en las que se empleen punteros. Por ejemplo:
Código Delphi
[-]
PNodo = ^TNodo;
TNodo = record
Valor: integer;
Sig: PNodo;
end;
Recuerda que tu debes realizar Dispose. Por cada New que hayas realizado, un Dispose debe ser efectuado cuando ya no se necesita.
Delphi libera la memoria que emplea. Ese es el comportamiento predeterminado... Pero si haz estado creando objetos y no le haz estado asignando un "dueño" para que éste se encargue de liberarlo de la memoria, la obligación recae en ti en ir liberandolos.
Por empezar se me ocurre que empieces a analizar si algo queda por ahi sin liberar.
A falta de muestra de código no te sabría decir que y/o donde está fallando.
Saludos,