Ver Mensaje Individual
  #5  
Antiguo 03-02-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Reputación: 27
jachguate Va por buen camino
Cool

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.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita