[Lazarus-es] error al liberar formulario

Paola Bruccoleri pbruccoleri en adinet.com.uy
Sab Nov 6 14:56:38 CET 2010


El 06/11/2010 10:55 a.m., José Mejuto escribió:
>
> Para detectar estos problemas compila el proyecto con la opción de
> heaptrc "Proyecto ->  Opciones ->  Enlazado ->  Usar heaptrc", ya que
> cada vez que liberas un bloque de memoria, heaptrc lo marca para que
> si intentas usarlo después de ser liberado siempre de error. En
> compilaciones normales puede dar error o no, es cuestión de azar. Si
> haces un DMPrincipal.free sin usar heaptrc, simplemente se libera la
> memoria, de modo que si intentas acceder de nuevo al objeto liberado
> la información correcta puede seguir ahí o no, depende del azar, si
> sigue ahí, pues no dará error, pero si el memory manager ya le ha
> asignado ese bloque liberado a otro objeto, el contenido será basura y
> kboom!. Te pongo un ejemplo:
>
esta opción no la sabía..!!!
ahora estoy haciendo pruebas, y en vez de aclararme más el panorama,  me 
estoy enloqueciendo. :)
Tengo 2 abm casi casi idénticos: solo cambia la tabla. Haciendo 
simplemente la prueba de entrar a uno de ellos y salir sin hacer nada; 
al cerrar el programa me indica que se ha liberado todo correctamente. 
En cambio si hago lo mismo con el otro abm, me quedan 4 unfreed memory 
blocks!! lo que no sé es cómo descubrirlos!! Obviamente si entro y salgo 
varias veces de esa opción, se me multiplican x 4.

chauuuuuuuu






More information about the Lazarus-es mailing list