This is the reason i get empty objects. i thought I was freeing a single object but it seems that the list with the objects is freed to. Removing this line is the solution. I don't even get memory leaks which I don't get since I skip "Free".
You're not freeing the list, it's just that the list stores only a
reference to the object, so when you Free the object that reference points to a an object that no longer exits.
As for the memory leaks, it's difficult to say without knowing the class of the list and how you're using it but if it's a TObjectList (or descendant) and it has OwnObjects set to True then it takes care of freeing them when you free it, as Remy explained, so there's no memory leaked.