AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dyn. Arrays Speicherproblem

Offene Frage von "OrallY"
Ein Thema von OrallY · begonnen am 12. Jul 2004 · letzter Beitrag vom 14. Jul 2004
Antwort Antwort
Benutzerbild von OrallY
OrallY

Registriert seit: 29. Apr 2003
268 Beiträge
 
#1

Dyn. Arrays Speicherproblem

  Alt 12. Jul 2004, 19:17
In meinem Programm wird ein dynamischer Array ständig um ein Feld vergrößert. Das treibt aber dummerweise die Speicherbelastung derbe in die Höhe. Den Array von vornherein auf zum Beispiel 1000 festzulegen ist nicht möglich.

Mir würde es auch reichen, dass jedes mal, wenn die Länge des Array auf 0 gesetzt wird, auch der Speicher wieder Freigegeben wird. Nur kenne ich mich mit Speichermanagment praktisch nicht aus. Ich habs mal so probiert, aber irgendwie scheint das nicht zu funktionieren (was mich mit meinen Kenntnissen auch nicht sonderlich verwundert ).

Delphi-Quellcode:
SetLength(DynArray, 0);
Finalize(DynArray);
FreeMem(MouseWay);
Da ich in dem Bereich ziemlich unbeleckt bin, wäre Konkretes für mich sehr hilfreich.
.oO'rallY
Linux is like a tipi: no gates, no windows and a gnu-eating apache inside...
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Dyn. Arrays Speicherproblem

  Alt 12. Jul 2004, 19:31
Delphi reserviert den Speicher ja in recht großen Blöcken von Windows. Solange aber noch Teile des Blockes in Benutzung sind, kann der Block nicht freigegeben werden.

Ich würde an deiner Stelle eher versuchen, das Array nicht schrittweise um 1 zu vergrößern, sondern das Array von vornerein großzügig zu dimensionieren. Solltest du dennoch an die Grenzen kommen, dann vergrößere das Array gleich um z.B. 20%. Du musst nur dran denken, einen eigenen Zähler für das zuletztbenutzte Element mitzuführen.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von OrallY
OrallY

Registriert seit: 29. Apr 2003
268 Beiträge
 
#3

Re: Dyn. Arrays Speicherproblem

  Alt 12. Jul 2004, 19:34
Gibt es da keine elegantere Lösung?
.oO'rallY
Linux is like a tipi: no gates, no windows and a gnu-eating apache inside...
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Dyn. Arrays Speicherproblem

  Alt 12. Jul 2004, 19:35
Keine dynamischen Arrays benutzen? Einen eigenen Speichermanager schreiben?
Ob das eleganter ist, sei mal dahingestellt.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von OrallY
OrallY

Registriert seit: 29. Apr 2003
268 Beiträge
 
#5

Re: Dyn. Arrays Speicherproblem

  Alt 14. Jul 2004, 16:52
Ist es nicht möglich, den Speicher wieder freizugeben, wenn die Daten des Arrays nicht mehr benutzt werden? Momentan wird, auch wenn ich den Array zwischenzeitlich auf 0 Felder kürze, trotzdem kein Speicher freigeben und beim nächsten Füllen neuer dazu beansprucht.
.oO'rallY
Linux is like a tipi: no gates, no windows and a gnu-eating apache inside...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz