AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Objekte freigeben

Ein Thema von SteffenSchm · begonnen am 25. Feb 2009 · letzter Beitrag vom 3. Mär 2009
Antwort Antwort
Seite 3 von 3     123   
Muetze1
(Gast)

n/a Beiträge
 
#21

Re: Objekte freigeben

  Alt 28. Feb 2009, 13:27
... und die IF Abfrage ist dabei nur Zeitverschendung...
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#22

Re: Objekte freigeben

  Alt 28. Feb 2009, 16:28
Bessere Absicherung gegen Memory Leaks erhält man mit try .. finally Blöcken:
Delphi-Quellcode:
  Object1 := TMyFirstClass.Create;
  try
    // use Object1
    ...
    Object2 := TMySecondClass.Create;
    try
      // use Object2
      ...
      Object3 := TMyThirdClass.Create;
      try
        // use Object3
        ...
      finally
        FreeAndNil(Object3);
      end;
    finally
      FreeAndNil(Object2);
    end;
  finally
    FreeAndNil(Object1);
  end
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#23

Re: Objekte freigeben

  Alt 28. Feb 2009, 16:44
Zitat von mjustin:
Bessere Absicherung gegen Memory Leaks erhält man mit try .. finally Blöcken:[...]
Und jetzt zeig mir mal bitte, wie du du das im Finally Block packst.

Zu dem Parameterproblem könntest du zwei Wege verwenden. Entweder FParameter von TMyBox ist eine "lokale" Kopie, oder TMyBox interessiert sich nicht um den Parameter sondern hat nur ein Zeiger drauf. Das heißt nichts zu Anfang erstellen und am Ende freigeben. Aber dann natürlich beim jedem Zugriff zuerst testen, ob der Zeiger valid ist. Ich würde dabei ersteres bevorzugen, wenn das nicht ZU viele Daten sind.

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
SteffenSchm

Registriert seit: 2. Nov 2004
Ort: Herzogenaurach
84 Beiträge
 
Delphi 10.3 Rio
 
#24

Re: Objekte freigeben

  Alt 28. Feb 2009, 17:00
Ich danke Euch allen (besonders shmia, sx2008 und xZise) für die nützlichen Hinweise.

Ich habe dabei einiges gelernt.
Steffen
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#25

Re: Objekte freigeben

  Alt 28. Feb 2009, 18:45
Zitat von xZise:
Und jetzt zeig mir mal bitte, wie du du das im Finally Block packst.
Das war eigentlich schon alles, was es zu zeigen gab. Mehr Magie ist dazu nicht erforderlich, und auch nicht mehr als drei finally ... oder was meintest Du mit 'du du das', was da noch gepackt werden soll ?
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.477 Beiträge
 
Delphi 12 Athens
 
#26

Re: Objekte freigeben

  Alt 3. Mär 2009, 13:36
Damit "das" übersichtlich bleibt und nicht zu viele Blöcke entstehen, besser so:
Code:
Object1 := nil;
Object2 := nil;
Object3 := nil;
try
  Object1 := TMyFirstClass.Create;
  // use Object1 
  ...
  Object2 := TMySecondClass.Create;
  // use Object2 
  ...
  Object3 := TMyThirdClass.Create;
  // use Object3 
  ...
finally
  FreeAndNil(Object3);
  FreeAndNil(Object2);
  FreeAndNil(Object1);
end;
Bei der Freigabe von Objekten sollte eigentlich kein Fehler auftreten.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 01:58 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