Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: FastMM4 - RegisterExpectedMemoryLeak - Wie Pointer heraufinden?

  Alt 20. Dez 2010, 06:40
Delphi-Referenz durchsuchenAddr gibt die Adresse (Pointer) zur Variable und nicht zum Inhalt.
RegisterExpectedMemoryLeak(Addr(MyObject)); registriert also die Variable MyObject,
wärend RegisterExpectedMemoryLeak(MyObject); das Objekt selber registriert.

PS: Es wird nur die Objektinstance und nichts Anderes im Objekt Enthaltenes registriert.
Delphi-Quellcode:
var
  S: String;
  C: TStrings;

ReportMemoryLeaksOnShutdown := True;
S := IntToStr(123456); // damit auch wirklich eine Stringvariable im Speicher erzeugt wird
C := TStringList.Create;
C.Add(S);
RegisterExpectedMemoryLeak(C);
Hier wäre also die TStringList nicht mehr im Log, aber der String im Objekt schon.


Und jetzt nochmal konkret zu den von Delphi 6 standardmäßig erzeugten Lecks - wie handhabe ich es denn da? Da weiß ich ja nicht, wo und wie die erzeugt werden...
Tja, das ist das Problem.
Wenn du nicht an die Variablen rankommst, wo diese "Speicherlecks" verwaltet werden oder an entsprechende Zeiger, dann kannst du dieses nicht registrieren.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat