![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#4
|
|||
|
|||
|
problemas con la memoria
Hola a todos,
yo tengo un problema parecido al comentado, mi programa va cogiendo y cogiendo RAM según se está ejecutando. He estado mirándolo un poco y resulta que por algún lado no libero memoria. Os pongo un ejemplo de una función del programa, el cual tiene el dicho problema: function TForm.Funcion(const BMP: TBitmap): TBitmap; var x,y: Word; Line1,Line2: PByteArray; begin //Crear y asignar BMP Result:=TBitmap.Create; Result.Assign(BMP); //Recorre la imagen línea a línea for y:=0 to Result.Height-1 do begin //Asigna los valores a los punteros Line1:=BMP.ScanLine[y]; //* Line2:=Result.ScanLine[y]; //* //Recorre pixel a pixel for x:=0 to Result.Width-1 do begin //Realiza operaciones end; end; end; La cuestión es que no sé porqué cuando hace * 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. He probado a hacer una copia de la variable de entrada y luego liberarlo con .Free, y así si he conseguido liberar la parte correspondiente de memoria, pero no consigo liberar la correspondiente a Result o a la salida. ¿Cómo podría conseguirlo? ¿Y porqúe si en * asigno punteros se crea una copia de la imagen y ocupa memoria? Muchas gracias a todos por vuestra ayuda y un saludo. ![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|