A ver, no nos confundamos. El método Lista.Delete borra un elemento de la lista, pero cada elemento es un puntero y Delete no libera la memoria a la que apunta el item, es decir, el registro creado con New. Por eso es necesario Dispose.
Igualmente, el método Lista.Clear únicamente borra cada item, pero sin liberar la memoria a la que apunta cada uno.
Por eso escribí: antes de destruir la lista. Es decir, tienes que hacer el Dispose de cada elemento, y posteriormente llamar a Lista.Free para borrar la lista y todos sus elementos.
En resumen: una cosa es el puntero y otra cosa es el bloque al que apunta el puntero.
// Saludos
|