Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi "Zu wenig Arbeitsspeicher" bei Application.ProcessMessages (https://www.delphipraxis.net/146604-zu-wenig-arbeitsspeicher-bei-application-processmessages.html)

changlee 23. Jan 2010 14:47


"Zu wenig Arbeitsspeicher" bei Application.Process
 
Hallo,

ich habe in meinem Programm das Problem, dass bei einer bestimmten Aktion häufig, aber nicht immer ein Exception mit der Meldung "Zu wenigArbeitsspeicher" ausgelöst wird.
Ich habe mir schon FastMM besorgt, um eventuellen Speicherlecks auf die Spur zu kommen. Doch daran scheint es nicht zu liegen.


Der Quelltext ist recht umfangreich, deshalb poste ich ihn erstmal nicht (wüsste sowieso nicht was...) sondern beschreibe mal abläuft:

Da die Prozedur eine gewisse Zeit läuft, schreibe ich an bestimmten Code-Stellen eine Status in 2 Labels. Jedes Mal, wenn der Status geschrieben wurde, wird ein Application.ProcessMessages aufgerufen.
Ganz am Ende, wenn ich die Statuslabels nur noch leere und ein abschließendes ProcessMessages aufrufe tritt häufig der beschriebene Fehler ein.

Wenn ich versuche per F7 in das ProcessMessages "hineinzusteppen" stürtzt die Delphi IDE komplett ab (tja, Delphi 2005).

Ich habe keine Ahnung wie ich jetzt weiter an das Problem rangehen soll.

Eine Endlosschleife kann es doch nicht sein, oder? Die würde doch die Anwendung einfrieren lassen.
Habe auch schon vermutet, dass ich irgendwelche Ereignisbehandlungsroutinen gegenseitig auslösen und es zu einer Art Rekursion kommt. Aber dann müsste der Fehler doch ein Stack-Überlauf sein, oder?

Kann mir jemand einen Tip geben, wie ich weitersuchen könnte?

gangs-taas 23. Jan 2010 15:59

Re: "Zu wenig Arbeitsspeicher" bei Application.Pro
 
hey,
ich bin auch noch ein ziemlicher anfänger, aber ich könnte dir einen Tipp geben, wo solche meldungen bei mir oft ausgelöst wurden :

wenn du an bestimmten stellen speicher Reservierst (z.b. durch ein Dynamisches Array )
und dann mit dem Arbeitest
und dann ein neues brauchst

und du vergisst den Speicher wieder frei zu geben (weil delphi das vllt auch vergisst )

dann könnte es zu dieser Fehlermeldung kommen ...


als Tipp :

guck mal ob du irgendwo ein ".free" vergessen haben könntest ...


ich weiß ist nur nen doofer tipp aber vllt hilft er dir tzdm

changlee 23. Jan 2010 17:40

Re: "Zu wenig Arbeitsspeicher" bei Application.Pro
 
hi gangs-taas,

danke für den Tip, aber es ist wahrscheinlich kein vergessenes "Free".
Das habe ich bereits kontrolliert.
Ich habe gerade eben einen Fehler gefunden: Ein Zeiger auf ein Objekt wurde in einer function nicht korrekt zurückgegeben. Normalerweise gibt es dann Zugriffsverletzungen, wenn versucht wird aus dem entsprechenden Objekt zu lesen (was dann auch recht schnell zu finden ist).
Aber hier war es wohl anders. Der zurückgegeben Zeiger wurde nicht initialisiert. Sowie ich dann darauf zugegriffen habe, ist es zum Arbeitsspeicher-Exception gekommen.
Ich hoffe dass es daran lag. Zumindest kommt der Fehler jetzt nicht mehr.

Viele Grüße,
changlee

sirius 24. Jan 2010 08:27

Re: "Zu wenig Arbeitsspeicher" bei Application.Pro
 
Also Application.PRocessMessages ist etwas ganz böses und kann zu einem rekursiven Aufrufen deiner Methode führen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 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