Ich verwende eine TObjectList (Delphi 2007), um VIELE Daten zu speichern - ich erwarte, dass ich etwa 300.000 Elemente oder mehr habe. Wenn eine Liste erstellt wird, ist die Standardgröße jedoch so eingestellt, dass nur vier Elemente gespeichert werden, dann acht, wenn man versucht, ein fünftes Element hinzuzufügen, und sechzehn, wenn man versucht, ein neuntes Element usw. hinzuzufügen. Die Zahlen sind vielleicht aus, aber ich denke, die Funktionsweise ist korrekt. Das Problem dabei ist, dass alle Elemente aus dem nicht zugewiesenen Teil des Speichers in den neuen Speicherblock kopiert werden müssen, in den die neue erweiterte Liste migriert. Ich möchte eine bestimmte Anfangsgröße festlegen und die Reservierung von Speicher freigeben (oder die Speicherreservierung rückgängig machen, da das Reservieren und Zuweisen nicht dasselbe ist), den nicht belegten Speicherplatz, den die Liste zugewiesen / reserviert hat. Dies ist wahrscheinlich nicht viel Code, aber ich denke, dass es eine dauerhafte, solide Bezugnahme auf dieses Problem in Form einer Frage und Antwort geben sollte.
Tags und Links delphi tobjectlist