![]() |
Delphi-Version: 5
Memoryleak woher?
Hallo,
ich habe bei Programmende ein kleines Memoryleak: 21 - 28 bytes : TMBSEncoding x 1 Wo zum Teufel kommt das her? Ciao Stefan |
AW: Memoryleak woher?
Zitat:
|
AW: Memoryleak woher?
Installiere dir FastMM und binde den in Dein Programm ein. Dann gehe in den Debug-Mode und schaue Dir das Log-File an, da findest Du die meisten Informationen.
Mehr kann man dir mit deiner genauen Angabe, was Du so alles gemacht hast in Deinem Programm auch nicht helfen... :roll: ...:cat:... P.S.: Mein Programm stürzt immer mal wieder ab, warum? <- Ist in etwa genau so einfach und sicher zu beantworten... |
AW: Memoryleak woher?
Madexcept ist ziemlich wirkungsvoll um Memmory Leaks zu finden.
|
AW: Memoryleak woher?
Wurde TMBSEncoding von dir selber angelegt? Falls ja, gibst du es auch wieder frei?
|
AW: Memoryleak woher?
:glaskugel:
Ich vermute mal, du meinst TMBCSEncoding. Wird irgendwo TEncoding.GetEncoding aufgerufen? Das TEncoding, was dort zurück kommt, muss auch wieder freigegeben werden. |
AW: Memoryleak woher?
Die einzige Programmstelle, wo überhaupt ein Encoding vorkommt, wäre diese:
Delphi-Quellcode:
function CreateDocumentXML: boolean;
var Xml: IXMLDOCUMENT; ... begin try Xml := NewXMLDocument; Xml.Encoding := 'utf-8'; Xml.Options := [doNodeAutoIndent]; // looks better in Editor ;) ArchivNode := Xml.AddChild('archive'); ..... Ciao Stefan |
AW: Memoryleak woher?
Hilfe zur Selbsthilfe:
- FastMM4 herunterladen (die mit Delphi ausgelieferte ist etwas abgespeckt, was das genaue Lokalisieren des Leaks angeht): - FastMM als erste unit in der Projekt dpr Einbinden - irgendwo
Delphi-Quellcode:
rein schreiben
ReportMemoryLeaksOnShutDown := True
- FullDebugMode den Defines hinzufügen (Projektoptions -> Delphi Compiler -> Conditional defines) - hierbei auf die richtige Config oben in der Combobox achten. - sicherstellen, dass in der entsprechenden Config Debug Informationen generiert und in der binary vorhanden sind (unter Linking entweder der Haken bei Debug Information) oder eine map Datei erzeugt wird - beides sollte in der standard Debug Config der Fall sein - die FastMM_FullDebugMode.dll aus dem FastMM4 Repository unter "FullDebugMode DLL/Precompiled" in das Ausgabeverzeichnis deines Projekts (also neben die exe) kopieren (alternativ, irgendwo, wo Windows sie per PATH findet) - Programm aus der IDE heraus mit Debugging(!) starten Nach dem Beenden und Bestätigen des Dialogs mit dem Leak, sollte neben deiner exe eine txt Datei liegen, wo jeder Leak inklusive des Callstacks, der dazu führte aufgelistet ist. |
AW: Memoryleak woher?
@stevie & sakura:
Zitat:
Sherlock |
AW: Memoryleak woher?
Zitat:
...:cat:... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 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