Yo no estaría tan seguro de que sea un comportamiento normal. Casi me atrevo a asegurar que no es así. oAdd.Free ciertamente destruye el objeto pero no elimina la referencia de la lista; es decir, la lista debería tener el mismo número de elementos aunque uno de ellos ya no sea un objeto válido.
De cualquier forma, lo cierto es que el uso del Free sobra aquí. oAdd no se usa para construir un objeto sino simplemente para tener una referencia a uno ya existente: oPerson.Addresses.Item[ind].
Dicho de otra manera, oAdd y oPerson.Addresses.Item[ind] apuntan al mismo objeto. Si se destruye oAdd se destruye también oPerson.Addresses.Item[ind] (pues es el mismo) y dudo que tal sea la intención.
// Saludos
|