AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi MemoryLeak bei Frame und TComboBox.Items.AddObject()
Thema durchsuchen
Ansicht
Themen-Optionen

MemoryLeak bei Frame und TComboBox.Items.AddObject()

Ein Thema von Aviator · begonnen am 30. Nov 2020 · letzter Beitrag vom 1. Dez 2020
 
Benutzerbild von himitsu
himitsu
Online

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

AW: MemoryLeak bei Frame und TComboBox.Items.AddObject()

  Alt 30. Nov 2020, 23:00
Also entweder waren "diese" Items schon immer leer (z.B. andere oder falsche Frame-Instanz oder dein Create nicht ausgeführt), oder das Leeren wurde vorher schon einmal ausgeführt (durch irgendwas ausgelöst *1).
Letzteres würde man mitbekommen, mit einem weiteren Haltepunkt in einem OnChange der Komponente.
Man könnte auch die VCL debuggen, aber wenn das Löschen nicht über eine Klassenmethode ala Items.Clear, sondern via Message direkt an Windows geht, dann bringt ein Haltepunkt in der VCL/TComboBox nicht viel.

1) Würde ich aber erstmal ausschließen, denn du scheinst ja keinen anderen Code zu haben, der die Items löscht.
Wenn, dann würde ich eher erwarten, dass bereits die komplette ComboBox gelöscht wurde und nicht nur die Items.

OnChange der ComboBox reagiert aber auf Text/ItemIndex.
Für ein Change-Event des Items müsste man wohl irgendeine Message abfangen.
* entweder ein Hook auf die/mehrere Setter-Message, welche die Items zuweist/löscht
* oder eine Notify-Message (falls es sowas gibt)
Findet man im MSDN/PSDK von Windows, wenn man schaut mit welcher Message TComboBox die Items z.B. beim Add an Windows übergibt, und was beim Hersteller dazu steht.



Man könnte auch ein Destroy in seine Datenklasse einfügen, darein einen Haltepunkt und dann schauen von wo die Freigabe her kam.
* entweder in diesem Frame/Combobox gab es nie Items (rausfinden warum nicht)
* oder das wird igentwo "falsch" freigeben (erstmal rausbekommen wo und dann warum)
Aber wenn die Speichelecks deine Klassen-Instanzen sind (sind sie das wirklich? ), dann wurde TTestObject.Destroy ja nicht aufgerufen und ein Haltepunkt dort hilft nichts.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (30. Nov 2020 um 23:12 Uhr)
  Mit Zitat antworten Zitat
 


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:13 Uhr.
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