![]() |
FastMM4 - RegisterExpectedMemoryLeak - Wie Pointer heraufinden?
Hi!
Ich benutze den aktuellen FastMM und möchte gerne Expected Memory Leaks registrieren. Konkret sind es die häufig beschriebenen (z.B. ![]() Dabei würde ich diese gerne mit Hilfe der Funktion
Code:
registrieren.
function RegisterExpectedMemoryLeak(ALeakedPointer: Pointer): Boolean; overload;
Mein Problem: Woher bekomme ich den Pointer??? Ich verstehe es nicht so ganz :-( Wäre sehr dankbar für eure Hilfe! Beste Grüße! Robert |
AW: FastMM4 - RegisterExpectedMemoryLeak - Wie Pointer heraufinden?
|
AW: FastMM4 - RegisterExpectedMemoryLeak - Wie Pointer heraufinden?
Okay, danke für die Aufklärung - aber wie bekomme ich denn konkret den Pointer, den ich brauche (d.h. die Pointer auf die erwähnten Lecks)?
|
AW: FastMM4 - RegisterExpectedMemoryLeak - Wie Pointer heraufinden?
|
AW: FastMM4 - RegisterExpectedMemoryLeak - Wie Pointer heraufinden?
Okay, ich checks grad nicht. Wie gebe ich denn als Paramterer das Speichleck an? D.h. was ist das Speicherleck?
Ich verstehe es so: Wenn ich z.B. weiß, dass ich ein Objekt erstelle, z.B.
Code:
und es nicht mehr freigebe, dann wäre dies mein Speicherleck - oder?
MyObject := TMyObject.Create;
D.h. dann müsste ich quasi sowas wie
Code:
machen, oder?
RegisterExpectedMemoryLeak(MyObject);
Oder müsst es dann eben
Code:
heißen?
RegisterExpectedMemoryLeak(Addr(MyObject));
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... Vielen Dank für eure Geduld ;-) Robert |
AW: FastMM4 - RegisterExpectedMemoryLeak - Wie Pointer heraufinden?
![]()
Delphi-Quellcode:
registriert also die Variable MyObject,
RegisterExpectedMemoryLeak(Addr(MyObject));
wärend
Delphi-Quellcode:
das Objekt selber registriert.
RegisterExpectedMemoryLeak(MyObject);
PS: Es wird nur die Objektinstance und nichts Anderes im Objekt Enthaltenes registriert.
Delphi-Quellcode:
Hier wäre also die TStringList nicht mehr im Log, aber der String im Objekt schon.
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); Zitat:
Wenn du nicht an die Variablen rankommst, wo diese "Speicherlecks" verwaltet werden oder an entsprechende Zeiger, dann kannst du dieses nicht registrieren. |
AW: FastMM4 - RegisterExpectedMemoryLeak - Wie Pointer heraufinden?
Jetzt hab ichs verstanden - vielen Dank für die Erklärung und das Beispiel! :thumb:
Schade nur, dass das Problem dann wohl nicht zu lösen ist :( Schöne Feiertage :xmas: und einen guten Rutsch :party: ! Robert |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:38 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