![]() |
AW: Zugriffsverletzung beim Zerstören der TIniFile-Instanz
Hast du einmal einen Haltepunkt auf das Destroy der TIniFile Klasse gesetzt? Dann siehst du dort vielleicht mehr...
|
AW: Zugriffsverletzung beim Zerstören der TIniFile-Instanz
Stimmen die Callingconventions in der Dll und dem aufrufenden Programm?
Also cdecl oder stdcall? Für mich sieht Dein Fehler ja nach einem kaputten Stack aus, das könnte das problem sein. |
AW: Zugriffsverletzung beim Zerstören der TIniFile-Instanz
Zitat:
|
AW: Zugriffsverletzung beim Zerstören der TIniFile-Instanz
Zitat:
|
AW: Zugriffsverletzung beim Zerstören der TIniFile-Instanz
Das spricht umso mehr für die bereits erwähnte Vermutung, dass der Speicher dort kaputt ist.
Hast du die DLL einmal mit FastMM und aktiviertem FullDebugMode kompiliert? Das könnte auch auf der Entwicklermaschine solche Fehler aufdecken. Oder auch wenn es knallt: Dann bekommst du evtl. Stacktraces von Erstellung und fehlerhafter Änderung des Speichers. (Du musst die FullDebugMode DLL von FastMM dann mitliefern.) |
AW: Zugriffsverletzung beim Zerstören der TIniFile-Instanz
Also ich hab das jetzt eingerichtet. Und bei mir, wenn ich das auf dem Entwicklungsrechner laufen lasse, wird beim Shutdown offenbar nicht ein einziger MemLeak entdeckt. Das kann schon nicht sein :lol: Also irgendwo ist immer einer ;)
Nur weiß ich nicht, was ich noch groß machen soll. FastMM4 ist als erste Unit im DLL-Projekt eingebunden. Muss das zusätzlich auch in die aufrufende Applikation mit rein? Zudem ist im DLL-Projekt
Delphi-Quellcode:
eingestellt. Auch hier gilt wieder: nicht beim Aufrufer.
{$IFDEF DEBUG}ReportMemoryLeaksOnShutdown := true;{$ENDIF}
FastMM wurde so eingerichtet, dass der FullDebug-Mode aktiv ist. Allerdings würde ich hier gerne wissen, wo das gespeichert wird? Ich mein, es gibt da ne .inc-Datei, wo man das alles aktivieren kann. Muss die dann auch noch zur FullDebug-DLL mit dazu gelegt werden?! |
AW: Zugriffsverletzung beim Zerstören der TIniFile-Instanz
Zitat:
LG aus dem hohen Norden, Edmund |
AW: Zugriffsverletzung beim Zerstören der TIniFile-Instanz
Ok, d.h. ich hab offenbar tatsächlich keine MemLeaks? :shock:
|
AW: Zugriffsverletzung beim Zerstören der TIniFile-Instanz
Kommt drauf an, was du als Memory-Leck ansiehst.
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin ReportMemoryLeaksOnShutdown := True; // oder in der DPR gemacht end; procedure TForm1.Button1Click(Sender: TObject); begin for var i := 0 to 1000 do TComponent.Create(Self); // MemoryLeak zu Laufzeit, aber bei ProgrammEnde weg (da, wo ReportMemoryLeaksOnShutdown nachsieht) end; procedure TForm1.Button2Click(Sender: TObject); begin for var i := 0 to 1000 do TComponent.Create(nil); // MemoryLeak bis zum Ende end; |
AW: Zugriffsverletzung beim Zerstören der TIniFile-Instanz
Ja ok, das ist klar, das ist auch kein tatsächlicher Memory Leak, da der Owner sich ja um das Aufräumen kümmert. Ein TInitFile hat keinen Owner, ergo sollte man es nach dem Erzeugen auch wieder freigeben, sonst gibt es einen Memory Leak. Und in meinem Fall gibt's dann sogar noch eine AV oben drauf :roll:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:37 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