AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Wie erkenne ich eigentlich ein Memory-Leak?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie erkenne ich eigentlich ein Memory-Leak?

Ein Thema von pelzig · begonnen am 8. Feb 2015 · letzter Beitrag vom 9. Feb 2015
Antwort Antwort
Benutzerbild von himitsu
himitsu

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

AW: Wie erkenne ich eigentlich ein Memory-Leak?

  Alt 9. Feb 2015, 10:25
Delphi-Referenz durchsuchenReportMemoryLeaksOnShutdown
http://www.delphipraxis.net/183846-f...nshutdown.html

PS:
.Free prüft intern bereits auf Self<>nil, bzw. aus Assigned(Self).
Und deine Prüfung geht kaputt, wenn es im Free knallt und dann kein nil gesetzt wird.

Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
begin
  Button4Click(nil); // Aufräumfunktion aufrufen, oder direkt FreeAndNil(bmp);
  bmp := TBitmap.Create;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  FreeAndNil(bmp);
end;

procedure TForm1.Form1Close(Sender: TObject);
begin
  Button4Click(nil); // Aufräumfunktion aufrufen, oder direkt FreeAndNil(bmp);
end;
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 9. Feb 2015 um 10:32 Uhr)
  Mit Zitat antworten Zitat
Frank Ranis

Registriert seit: 15. Okt 2008
17 Beiträge
 
#2

AW: Wie erkenne ich eigentlich ein Memory-Leak?

  Alt 9. Feb 2015, 12:49
Hallo himitsu,


Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
begin
  FreeAndNil(bmp);
end;
Ok , das ist nun aber ein Problem meiner Programmierung.

Ich wollte doch nur zeigen, wie man Leichen produzieren kann, wenn man die Objekte nicht wieder richtig frei gibt.
Und das man das dann mit 'GetHeapStatus.TotalAllocated' auf einfache Weise sehen kann, wenn sich der Speicherbedarf unerklärlich erhöht.

Wo man den Fehler gemacht hat , sieht man natürlich nicht.

Gruß

Frank
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Wie erkenne ich eigentlich ein Memory-Leak?

  Alt 9. Feb 2015, 12:52
FastMM im FullDebugMode speichert die Rücksprungadresse des Aufrufs, also quasi die Adresse derjenigen, der den Speicher angefordert hatte.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort


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 11:05 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