AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Memoryleak durch Erstellen v. Objekt in Function()?
Thema durchsuchen
Ansicht
Themen-Optionen

Memoryleak durch Erstellen v. Objekt in Function()?

Ein Thema von BMI · begonnen am 1. Mär 2018 · letzter Beitrag vom 2. Mär 2018
 
Benutzerbild von himitsu
himitsu

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

AW: Memoryleak durch Erstellen v. Objekt in Function()?

  Alt 1. Mär 2018, 16:34
Objekte haben keine Referenzzählung.
(Ausnahme im ARC, dann sind die wie Interfaces)


imo.Free; darfst du sowieso niemals machen, denn du hattest auch niemals diese Instanz erstellt.
> imo := pico.picture.bitmap;

Delphi-Quellcode:
pico := TPicture.Create;
pico := EingangsImage.Picture;
Speicherleck, weil du was erstellt hast und danach aber in der selben Variale was anderes speichst.

Da pico nun ebenfalls nichts von dir ist, darfst du hier auch wieder nichts freigeben. (pico.free )

Außerdem dürftest du imo sowieso "hier" nicht freigeben, da das schließlich als Result zurückgegeben wird, wo es dann knallt, wenn jemand auf dieses Result zugreifen will.
objekte als Result sind immer grenzwertig, denn wer muß, darf, soll oder darf nicht das Objekt freigeben, welches diese Funktion zurückgibt?



Zitat:
image2.Picture.Bitmap
Hier wird zwar etwas zugewiesen, aber der Setter von .Bitmap nimmt diese Instanz nicht an.
Er macht sich eine eigene komplette Kopie dieses Bittmaps. (TBitmap.Create und kopiert den Inhalt dort rein)
Daher müsste hier anschließend auch Tmp.Free; . Aber nur, wenn bildbearbeiten eine "neue" Instanz zurück gibt, die man freigeben soll.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 1. Mär 2018 um 16:39 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 23:45 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