Einzelnen Beitrag anzeigen

tgvoelker

Registriert seit: 9. Sep 2002
Ort: Oelsnitz, Vogtland
39 Beiträge
 
Delphi 2009 Professional
 
#20

AW: Freier Speicher in Delphiprogrammen ermitteln?

  Alt 17. Jul 2012, 09:00
...um mich zu belehren...
Entschuldige bitte, war ein langer Tag und eine Belehrung lag nicht in meiner Absicht. Ich wollte eigentlich darlegen, warum GlobalMemoryStatus nicht geeignet ist, Dir entsprechende Informationen zu liefern.


Wie kann ich den Restspeicher für ein dynamisches Array ermitteln? Hier wäre es wichtig auch noch einen "restspeicher" für das laufende Programm frei zu halten!

Mavarik
Der verfügbare Restspeicher für ein dynamisches Array ergibt sich aus der Größe des Segments, in dem das Array angelegt wurde. Das hilft Dir nun nicht so richtig weiter, weil Du ein array of Pointer hast und für jeden Neueintrag einen Speicherbereich allokierst. Das geht solange, wie Segmente frei sind, in die die neu allokierten Speichermengen reinpassen.

Da Du 256MB-Blöcke allokierst, geht das solange, bis kein Segment mehr da ist, das 256 MB groß ist.

Den verfügbaren virtuellen Speicher kannst Du mit GlobalMemoryStatusEx ermitteln:

http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

Das Problem der Segmentierung bleibt aber nach wie vor bestehen. Wenn Du mehr Speicher allokieren willst, als das größte Segment hat, dann kommst Du um eine Struktur, die über die Segmente eine virtuelle Adressierung legt, nicht herum. ==> TSegmentedMemoryStream.
Thomas Völker
  Mit Zitat antworten Zitat