Thanks. Digging around oin the web I got the imporession that the problem could be to do with strings, withinvalid references to ansistrings for example. However, my code uses entirely either "shortstring" of "string[nn]", so there should be no allocation of managed strings, and even in dynamically-assigned records with, say, a shorttring[60] as a field, then the string[60] field shoud be in the record and not created separately. My code ruins successfully, including deallocation (Dispose) of dynamically created list elements.
I'm now stuck. This is turning into one of those unexpected "trivial" programming problems that consume many hurs!
I'm thinking of changing all my lits-elements, which are currebtly "records" with a few fields, into "classes" just to see if that makes any difference - on the theory that it will use some different RTL code which may not have this problem.