Cita:
Empezado por i.larranaga
parece que se hace una copia de la imagen en memoria, y luego al acabar la función esta memoria no se libera y se va acumulando en sucesivas llamadas a la función.
|
Pues no "parece que se hace una copia"... mas bien
seguro que se hace una copia en:
Código:
Result:=TBitmap.Create;
Result.Assign(BMP);
Si queres que esa memoria se libere, la llamada de la función debiera ser algo como:
Código:
Var
MyBMP : TBMP;
Begin
MyBMP := Funcion(OtroBMP);
try
// hacer cosas;
finally
MyBMP.Free;
end;
end
o bien:
Código:
Begin
with Funcion(OtroBMP) do
try
// hacer cosas;
finally
Free;
end;
end;
ya que el objeto se crea dentro de la rutina, y no parece que liberes el recurso fuera, según tu explicación.
El hacer una copia de la variable de entrada y luego liberarla... no tiene sentido.
Hasta luego.