PDA

Ver la Versión Completa : Liberación de memoria de punteros Data de un Tree.


afxe
19-06-2007, 13:10:41
Hola a todos.

He implementado un treeView enlazado con un DataSet usando la propiedad Data de los nodos para guardar los bookmark de cada registro. Con el método gotobookmark me voy posicionando en el dataset mientras me muevo por el tree.

Mi pregunta es: Al cerrar el form y destruirse el treeview... ¿Se libera la memoria usada por los bookmark? ¿Tendría que recorrer el arbol haciendo un freeBookmark por cada nodo antes de cerrar?

Gracias por vuestra atención.

Lepe
19-06-2007, 16:24:33
Tienes que liberarlo tú, y muy posiblemente antes de cerrar el Dataset (no he trabajado con ese tipo de Bookmark que comentas).

Con el bde solía usar BookmarkStr que es una cadena en string, así que no tenía que liberarlo, cuando la variable perdía su visibilidad... listo.

En tu caso, viendo que usas la propiedad Data, no será de tipo string, así que tendrás que liberarlo.

Saludos

delphi.com.ar
19-06-2007, 16:24:50
Mi pregunta es: Al cerrar el form y destruirse el treeview... ¿Se libera la memoria usada por los bookmark? ¿Tendría que recorrer el arbol haciendo un freeBookmark por cada nodo antes de cerrar?
Podrías llamar a FreeBookmark dentro del evento OnDeletion del TTreeView.


Saludos!

afxe
19-06-2007, 19:21:02
Gracias a ambos. Implementaré el OnDeletion.

Y por abusar: ¿existe alguna utilidad que te informe de la memoria que se va quedando ocupada por meteduras de pata como la de no liberar objetos cuando cierras un form? Es relativamente fácil ir haciendo .Create y se te escape el .free correspondiente. Quizás debería abrir un hilo nuevo, pero creo que viene a cuento para el ejemplo que he citado.

delphi.com.ar
19-06-2007, 19:23:12
Existe algo que puede ayudarte: MemProof (http://www.automatedqa.com/downloads/memproof/)
Pero lo que mas va a ayudarte es ser prolijo y metódico a la hora de escribir código.

Saludos!

afxe
20-06-2007, 17:12:34
Gracias de nuevo, por los consejos y los enlaces.

Saludos.