Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   ReportMemoryLeaksOnShutDown (https://www.delphipraxis.net/204717-reportmemoryleaksonshutdown.html)

TiGü 21. Jun 2020 22:21

AW: ReportMemoryLeaksOnShutDown
 
Ihr könntet auch mal ruhig auf die Ursprungsfrage eingehen und mitteilen, dass das setzen von ReportMemory...usw. auf True zwar ganz nett ist, aber sich zum Richtigen FastMM4 wie ein Dreirad zu einem Traktor verhält.

Venice2, nehme dir doch bitte 10 Minuten Zeit und schaue dir an, wie man den FastMM4 extern einbindet und das entstehende Log lesen lernt:
https://youtu.be/o0yZgQoV8MA

venice2 21. Jun 2020 22:25

AW: ReportMemoryLeaksOnShutDown
 
Zitat:

Zitat von TiGü (Beitrag 1467966)
Ihr könntet auch mal ruhig auf die Ursprungsfrage eingehen und mitteilen, dass das setzen von ReportMemory...usw. auf True zwar ganz nett ist, aber sich zum Richtigen FastMM4 wie ein Dreirad zu einem Traktor verhält.

Venice2, nehme dir doch bitte 10 Minuten Zeit und schaue dir an, wie man den FastMM4 extern einbindet und das entstehende Log lesen lernt:
https://youtu.be/o0yZgQoV8MA

Werde ich tun.
Danke für den Rat.

venice2 21. Jun 2020 23:28

AW: ReportMemoryLeaksOnShutDown
 
Habe mir das Video angesehen und eingerichtet.
Ändert aber nichts an der Ausgabe ausgenommen das Log ist etwas detaillierter und gibt mir genau das aus was ich schon wusste.

Delphi-Quellcode:
Result := GetExportPtr(Path, Delimiter); // Hier bleibt EurekaLog stehen damit kann ich aber nichts anfangen.


Das wird so auch in das Log geschrieben das in dieser Funktion etwas nicht freigegeben wird.
Was das ist, ist mir ebenfalls bekannt.
Ich alloziere Speicher der nicht freigegeben wird (angeblich).
Ich bekomme hier 14 Speicher Lecks weil ExportPtr 14 mal aufgerufen wird innerhalb einer schleife und die größe des Speichers anhand des Strings strExport neu zugewiesen wird.

Delphi-Quellcode:
ExportPtr := AnsiStrAlloc(Length(strExport) + 1);


ExportPtr

Seltsam ist nur das ich ihn freigebe wenn die DLL beendet wird und zwar in Destroy.

Delphi-Quellcode:
destructor TMyLib.Destroy;
begin
  StrDispose(ExportPtr);
end;
EDIT:
OK. Das ist mein Fehler.
Zitat:

Ich bekomme hier 14 Speicher Lecks weil ExportPtr 14 mal aufgerufen wird innerhalb einer schleife und die größe des Speichers anhand des Strings strExport neu zugewiesen wird.
Ich gebe den String frei.
Aber!
Wenn ich diesen jedesmal innerhalb der Schleife neu Alloziere dann Alloziere ich 14x mal neuen Speicher und der vorherige wird nicht freigegeben.

Ich habe die Zuweisung jetzt aus der Schleife herausgenommen und weise den Speicher erst zu wenn strExport sein Maximum(Length) erreicht hat.
Also einmalig direkt nach der Schleife!

Siehe da die Speicherlecks sind weg.

TiGü 22. Jun 2020 07:45

AW: ReportMemoryLeaksOnShutDown
 
Oft ist ja gar nicht kaputt, sondern man selbst das Problem! :stupid:

venice2 22. Jun 2020 08:54

AW: ReportMemoryLeaksOnShutDown
 
Zitat:

Zitat von TiGü (Beitrag 1467979)
Oft ist ja gar nicht kaputt, sondern man selbst das Problem! :stupid:

Nun ist nicht jeder so erhaben wie du.
Einer muss ja den absoluten Top Level haben wenn nicht ich dann du vielleicht.
Aber was weis ich schon.

TiGü 22. Jun 2020 10:04

AW: ReportMemoryLeaksOnShutDown
 
Na na, Humor ist, wenn man trotzdem lacht.

Das kennt doch jeder von uns.
Man debuggt sich nen Wolf, macht und tut ewig und drei Tage und am Ende ändert man nur ein, zwei, drei Zeilen und schon geht’s.
Hinterher ist man immer schlauer und wundert sich, warum man nicht gleich drauf gekommen ist.
Aber ist halt so, dass ist halt menschlich. Wichtig ist, dass man dran bleibt und nicht aufgibt.

venice2 22. Jun 2020 10:08

AW: ReportMemoryLeaksOnShutDown
 
Zitat:

Zitat von TiGü (Beitrag 1467990)
Na na, Humor ist, wenn man trotzdem lacht.

Das kennt doch jeder von uns.
Man debuggt sich nen Wolf, macht und tut ewig und drei Tage und am Ende ändert man nur ein, zwei, drei Zeilen und schon geht’s.
Hinterher ist man immer schlauer und wundert sich, warum man nicht gleich drauf gekommen ist.
Aber ist halt so, dass ist halt menschlich. Wichtig ist, dass man dran bleibt und nicht aufgibt.

Ja. Dem kann ich nur zustimmen.
Ist manchmal zum Haare raufen. Alles gut.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:36 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz