Solche heiklen Probleme löse ich in der Regel auf folgende Art:
Delphi-Quellcode:
interface
function MeineListe: TMeineListe;
implementation
var
FMeineListe: TMeineListe = nil;
function MeineListe: TMeineListe;
begin
if not assigned(FMeineListe)
then FMeineListe:=TMeineListe.Create;
Result:=FMeineListe;
end;
finalization
FreeAndNil(FMeineListe);
end.
Das heißt, die Liste wird dann erstellt, wenn sie das erste Mal gebraucht wird, und nicht, wenn das Delphi für richtig hält.
Da der Zeitpunkt des Aufräumens meist weniger kritisch ist, kann das im finalization-Abschnitt erfolgen.
Das ist wahrscheinlich das, was
BUG beschrieben hat.