Registriert seit: 29. Mai 2002
37.621 Beiträge
Delphi 2006 Professional
|
Re: Speicher läuft voll bei WMI....
23. Sep 2007, 00:22
SetLength(_WMIResults.PropName, Prop + 1);
Du vergrößerst das dynamische Array immer um eins. Das ist schlecht, weil intern passiert folgendes: Es wird neuer Soeicher alloziiert und dann der Inhalt des alten Arrays in den neuen Speicherbereich kopert. Der Speicherbereich des alten Arrays gibt der Speichermanager von Delphi aber nicht frei. Deswegen möglichst vor der Schleife das Array so groß machen wie nötig und nicht in der Schleife immer um eins vergrößern. Ist das Array zu klein, gleich um ca. 20% vergrößern und noch mal probieren, ob es passt. Und am Ende dann auf die tatsächich benötigte Größe zurücksetzen. Das erspart eine unnötige Speicherreservierung.
Michael Ein Teil meines Codes würde euch verunsichern.
|