![]() |
Speicher freigegeben?
Hallo,
gibt es eigentlich eine Möglichkeit in Delphi (habe Delphi 10) oder evtl. ein Tool um zu überprüfen, ob man korrekt alles an Speicher wieder freigegeben hat, wenn die programmierte Anwendung wieder beendet wird? Gruß Michael |
AW: Speicher freigegeben?
Beispielsweise das hier in die dpr-Datei packen
Delphi-Quellcode:
Ich persönlich packe das in IFDEF DEBUG denn dann brauche ich mir beim Wechsel von Debug auf Release keine Gedanken zu machen, ob ich diese Zeile kommentiert habe oder nicht.
{$IFDEF DEBUG}
ReportMemoryLeaksOnShutdown := True; {$ENDIF} Es gibt aber auch bessere Möglichkeiten. Ich glaube eine davon heißt MadExcept. Die delphieigene Variante mit ReportMemoryLeaksOnShutdown ist aber auch gut und für Amateure absolut ausreichend. |
AW: Speicher freigegeben?
Hallo,
du verwechselst MadExcept mit FastMM4. |
AW: Speicher freigegeben?
madExcept erkennt auch Memory Leaks etc.
Zitat:
|
AW: Speicher freigegeben?
Zitat:
Inzwischen hab ich gelesen, dass mit diesem "ReportMemoryLeaksOnShutdown" vieles nichts gefunden wird... z.B. so Sachen wie API Zeugs. Ich dacht, dass ist alles einfacher. So auf die Art...bei Programmstart hab ich 4000 Byte Speicher frei und nach Programmende 3999 Byte. Also ist irgendwo 1 Byte nicht freigegeben worden. So in der Art hab ich's mir vorgestellt :) MadExcept in Google = Englisch... ne, ich will nicht wieder neues lernen :) Ich geh mal schön mein Programm durch... ist wohl die beste Variante :) Danke für die Infos von Euch. Michael |
AW: Speicher freigegeben?
Du kannst auch das große FastMM4 benutzen und FullDebugMode setzen. Dann erhälst du eine Log-Datei mit StackTrace wo du genau siehst wo der Speicher angefordert wurde.
Und mir hat ReportMemoryLeaksOnShutdown bisher in 99% der Fälle ausgereicht. Nur zweimal musste ich auf die große Variante umsteigen weil ich einen Fehler absolut nicht gefunden hatte. |
AW: Speicher freigegeben?
Am besten die aktuelle Version von FastMM ziehen (
![]() Ist ihr "Geld" wert. Die in Delphi eingebaute Version ist etwas "abgespeckt". |
AW: Speicher freigegeben?
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe mir jetzt auch mal FastMM von
![]()
Delphi-Quellcode:
fehlerfrei compilieren, aber leider bekomme sofort nach dem Start ich eine seltsame Fehlermeldung, obwohl die Unit FastMM4.pas an erster Stelle der Uses-Liste steht (s. Screenshot) :(
{$define FullDebugMode}
Was mache ich da falsch?? |
AW: Speicher freigegeben?
Stoppunkt in SysGetMem und SysAllocMem setzen (zu finden in GetMem.inc) und schauen, wer da rein stiefelt bevor die Meldung kommt.
|
AW: Speicher freigegeben?
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Das führt eben dazu, dass FastMM sich sofort mit einer Fehlermeldung verabschiedet. Hier ![]() Im Grunde genommen benötige ich das 'große' FastMM auch nicht so dringend, solange ich mit der 'ReportMemoryLeaksOnShutdown' - Option überhaupt keine Memory - Leaks gemeldet bekomme. BTW, die Community-Edition ist wirklich eine feine Sache! So komme ich endlich mal zu einem 'richtigen' Delphi, obwohl ich vermutlich auch in Zukunft nur einen kleinen Teil der Features nutzen werde. Aber schon allein die Verfügbarkeit der Sources ist ein enormer Gewinn! Gruß Maekkelrajter |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:33 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 by Thomas Breitkreuz