Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Speicher freigegeben? (https://www.delphipraxis.net/197081-speicher-freigegeben.html)

Stevie 23. Jul 2018 10:53

AW: Speicher freigegeben?
 
Der callstack sieht nach dem Laden von Resourcestrings aus, das sollte aber weit nach dem initialization Block von FastMM4.pas passieren.

Mehr kann ich ohne genauere Informationen nicht sagen.

Maekkelrajter 23. Jul 2018 14:04

AW: Speicher freigegeben?
 
Zitat:

Zitat von Stevie (Beitrag 1408388)
Der callstack sieht nach dem Laden von Resourcestrings aus, das sollte aber weit nach dem initialization Block von FastMM4.pas passieren.

Genau das ist aber offensichtlich nicht der Fall. Es wird noch munter weiter alloziert, bevor die Abarbeitung des 'initialization' - Blocks von FastMM beginnt.
Da werden z.B. von System.SysUtils.GetFormatSettings TFormatSettings.GetEraInformation, TFormatSettings.GetDayNames, TFormatSettings.GetMonthNames usw. aufgerufen. Das kann also überhaupt nicht funktionieren. Womöglich gibt es eine neuere Version von FastMM, die das berücksichtigt (ich habe V4.992).

Stevie 23. Jul 2018 16:02

AW: Speicher freigegeben?
 
Zitat:

Zitat von Maekkelrajter (Beitrag 1408409)
Zitat:

Zitat von Stevie (Beitrag 1408388)
Der callstack sieht nach dem Laden von Resourcestrings aus, das sollte aber weit nach dem initialization Block von FastMM4.pas passieren.

Genau das ist aber offensichtlich nicht der Fall. Es wird noch munter weiter alloziert, bevor die Abarbeitung des 'initialization' - Blocks von FastMM beginnt.
Da werden z.B. von System.SysUtils.GetFormatSettings TFormatSettings.GetEraInformation, TFormatSettings.GetDayNames, TFormatSettings.GetMonthNames usw. aufgerufen. Das kann also überhaupt nicht funktionieren. Womöglich gibt es eine neuere Version von FastMM, die das berücksichtigt (ich habe V4.992).

Wenn das der Fall ist, dann ist FastMM4 nicht die erste Unit, die initialisiert wird.
Setz mal nen Haltepunkt in System._StartExe, InitUnits und FastMM4.initialization. Da muss er vor der Meldung vorbei kommen.

Außerdem kann ein Haltepunkt in InitUnits an der Stelle wo
Delphi-Quellcode:
TProc(P)();
steht, helfen, zu sehen, welches die Units sind, die gerade initialisiert werden, dort einfach dann mit F7 reinspringen.

Dann lies dir nochmal den letzten Paragraph in der Meldung aus deinem ersten Screenshot durch und mach dir Gedanken, ob das nicht der Fall ist bei dir - alles andere ist :glaskugel:

Maekkelrajter 24. Jul 2018 11:04

AW: Speicher freigegeben?
 
Zitat:

Zitat von Stevie (Beitrag 1408388)
Außerdem kann ein Haltepunkt in InitUnits an der Stelle wo
Delphi-Quellcode:
TProc(P)();
steht, helfen, zu sehen, welches die Units sind, die gerade initialisiert werden, dort einfach dann mit F7 reinspringen.

Das war der entscheidende Tip. :thumb:
So konnte ich feststellen, dass vor dem 'initialize' von FasMM4.pas noch SHFolder.pas initialisiert wurde, weil SHfolder in der uses-Klausel im 'implementation'-Teil von FasMM4 aufgeführt ist. Da war es relativ leicht, (vorläufige) Abhilfe zu schaffen. Die 3 Deklarationen, die FastMM4 aus SHFolder benötigt, habe ich kurzerhand in FastMM4.pas eingefügt und SHFolder aus der uses - Liste entfernt. Schon war die Fehlermeldung verschwunden und FastMM lief, was sich auch (erwartungsgemäß) durch einen erheblichen Performanceverlust in der IDE bemerkbar machte.
Es ist mir allerdings ein Rätsel, wie FastMM in der Original-Fassung überhaupt irgendwo funktionieren kann??

Edit:
Die Lösung des Rätsels: FastMM4 hatte eine zufällig im Suchpfad liegende uralte Version von SHFolder.pas eingebunden. Nachdem ich den alten Mist samt .dcu entsorgt hatte, klappte alles ohne Änderung. Nunmehr wird die aktuelle WinAPI.ShFolder.pas eingebunden, und damit läuft's nun! :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:03 Uhr.
Seite 2 von 2     12   

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