![]() |
SetLength -> Zu wenig Arbeitsspeicher?
Hallo zusammen,
laut Suchfunktion bin ich ja nicht der erste der das Problem hat. Ich habe das Problem, dass wenn meine Anwendung lange läuft (paar Tage), dass irgendwann sporadisch bei folgenden Aufruf
Delphi-Quellcode:
eine Exception entsteht mit "zu wenig Arbeitsspeicher".
var
aLaenge : Integer; begin aLaenge := 77; //Beispiel try SetLength(InputMsg^, 12+aLaenge); except on E: Exception do begin ErrorStr := 'Aufruf von SetLength():'; end; end; end; Es ist aber noch genug Speicher verfügbar laut TaskManager (auch virtueller Speicher). Die Frage ist, wie kann sowas entstehen bzw. wie kann man dies evtl. verbessern / abändern? Ich verwende Delphi 2009 und die Anwendung läuft auf Win2003 Server. Wäre für jeden Tip dankbar. Viele Grüße Alex PS: InputMsg wird als PAnsiString in diese Funktion übergeben... |
AW: SetLength -> Zu wenig Arbeitsspeicher?
Hallo,
Ist die neue Länge des Strings abhängig von seiner alten Länge? d.h. benutzt du Length um die neue Länge zu bestimmen? Und bist du dir sicher, dass du einen gültigen PAnsiString übergibst? |
AW: SetLength -> Zu wenig Arbeitsspeicher?
Delphi kann, bzw. Win32-Anwendungen können standardmäßig nur maximal 2 GB an "virtuellem" Speicher verwalten ... ist der voll, dann knallt's
Ich vermute mal du hast ein Speicherleck, durch dein Rumgepointere oder Anderswo. Scheib mal
Delphi-Quellcode:
in den Constructor deiner Form.
ReportMemoryLeaksOnShutdown := True;
|
AW: SetLength -> Zu wenig Arbeitsspeicher?
Hallo,
ich sehe keine Funktion, nur etwas Code. Und der reicht nicht (Laenge nicht definiert). Heiko |
AW: SetLength -> Zu wenig Arbeitsspeicher?
also die Variable ist defintiv gültig.
@hoika, das müsste aLaenge heißen in dem Code (habs geändert). Ist ja auch nur der Inhalt der Funktion (ohne Funktionskopf). Kann man an diesen "maximal 2 GB" etwas machen oder kommt man da nicht rum? Was ist, wenn die Anwendung aber mit der Zeit immer mehr Daten im Bauch halten muss? Gruß Alex |
AW: SetLength -> Zu wenig Arbeitsspeicher?
Zitat:
|
AW: SetLength -> Zu wenig Arbeitsspeicher?
Zitat:
|
AW: SetLength -> Zu wenig Arbeitsspeicher?
Ok verstehe ich aber das kann ja wohl keine Lösung sein oder?
Ich sag mal ganz krass, wenn ich viele Stringlisten mit vielen Objekten oder Zeigern habe, dann ist es doch keine Lösung "einfach" bei 2GB den Riegel vor die Tür zu schieben wenn mein Rechner doch 4GB hat... Macht doch kein Sinn oder? Gruß Alex |
AW: SetLength -> Zu wenig Arbeitsspeicher?
ist der verfügbare Speicher evtl. "nur" fragmentiert? kann man da vielleicht ansetzen und irgendwas machen?
|
AW: SetLength -> Zu wenig Arbeitsspeicher?
Zitat:
Also wenn ich ein Programm im Taskmanager sehen würde, was 2GB Speicher verbraucht, dann wär das aber ganz schnell abgeschossen.... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz