Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
Turbo Delphi für Win32
|
Re: NonVCL Version von Classes.dcu
18. Dez 2003, 18:28
Bei jedem Aufruf von SetLength wird das ganze Array an eine andere Speicherstelle verschoben, da nicht sicher ist, ob hinter der aktuellen Stelle noch genügend Platz dafür ist.
Durch irgendeine Schwäche im Delphi-Speichermanager (genaueres weiß ich auch nicht, würde mich auch mal interessieren) kann es nun passieren (und es passiert), dass der Speicher, den das Array vor dem Verschieben belegte, nicht wieder frei gegeben wird. Dadurch kommt die hohe Speicherbelastung zu Stande.
Daneben ist es natürlich auch höchst in effizient, wenn ständig Massen von Daten rumgeschoben werden, nur weil ein neuer String dazukommz.
Martin Leim Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
|