AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Zugriffsverletzung beim Zerstören der TIniFile-Instanz

Zugriffsverletzung beim Zerstören der TIniFile-Instanz

Ein Thema von TheSledgeHammer · begonnen am 26. Jan 2021 · letzter Beitrag vom 3. Feb 2021
Antwort Antwort
TheSledgeHammer

Registriert seit: 22. Mai 2019
Ort: Mulfingen
43 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: Zugriffsverletzung beim Zerstören der TIniFile-Instanz

  Alt 2. Feb 2021, 08:32
Ok, d.h. ich hab offenbar tatsächlich keine MemLeaks?
Tobias
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.590 Beiträge
 
Delphi 12 Athens
 
#2

AW: Zugriffsverletzung beim Zerstören der TIniFile-Instanz

  Alt 2. Feb 2021, 09:30
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;
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
TheSledgeHammer

Registriert seit: 22. Mai 2019
Ort: Mulfingen
43 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Zugriffsverletzung beim Zerstören der TIniFile-Instanz

  Alt 2. Feb 2021, 12:19
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
Tobias
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.359 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Zugriffsverletzung beim Zerstören der TIniFile-Instanz

  Alt 2. Feb 2021, 16:05
Ok, d.h. ich hab offenbar tatsächlich keine MemLeaks?
Bau doch mal testweise einen ein.
Dann weißt Du zumindest, ob sowas korrekt gefunden wird.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.077 Beiträge
 
Delphi 12 Athens
 
#5

AW: Zugriffsverletzung beim Zerstören der TIniFile-Instanz

  Alt 2. Feb 2021, 17:53
Wenn FastMM auch nichts findet, bleibt nur mit Logs zu analysieren... z.B. den Speicher des Objekts nach der Erzeugung als Dump loggen und dann bei der Freigabe, ...
Das ist nicht schön, aber solche Fehler sind leider nicht so einfach zu finden.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.590 Beiträge
 
Delphi 12 Athens
 
#6

AW: Zugriffsverletzung beim Zerstören der TIniFile-Instanz

  Alt 2. Feb 2021, 19:31
Das volle FastMM kann bei Speicherfreigabe den Speicher überschreiben (mit einem Muster markieren)
so würde z.B. eine Doppelfreigabe oder ein Zugriff nach der Freigabe auffallen.
-> Man müsste nur noch das entgültige Freigeben ein bissl verzögern, damit auch freigegebener und inzwischen wiederverwendeter Speicher in diese Prüfung fallen.

Gegen sowas wie Buffer-Overrun oder komplett falsche/ungültige Zeiger kann man sich aber nicht wirklich wehren.


Und ja, möglich wäre es viele Wichtige oder gleich alle Speicheranforderungen/-freigaben in ein Log schreiben zu lassen.
Wenn es dann später knallt, dann kann man z.B. schauen was vorher alles an der Stelle mal war.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 2. Feb 2021 um 19:34 Uhr)
  Mit Zitat antworten Zitat
TheSledgeHammer

Registriert seit: 22. Mai 2019
Ort: Mulfingen
43 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Zugriffsverletzung beim Zerstören der TIniFile-Instanz

  Alt 3. Feb 2021, 13:39
Wenn FastMM auch nichts findet, bleibt nur mit Logs zu analysieren... z.B. den Speicher des Objekts nach der Erzeugung als Dump loggen und dann bei der Freigabe, ...
Das ist nicht schön, aber solche Fehler sind leider nicht so einfach zu finden.
Ja, das klingt fast so als wäre das nötig. Kannst du mir erklären wie ich das machen kann? Oder hast du ne Anleitung im WWW, die was taugt?
Tobias
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:51 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