AGB  ·  Datenschutz  ·  Impressum  







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

Nur free oder FreeandNil

Ein Thema von Helmi · begonnen am 29. Jun 2004 · letzter Beitrag vom 30. Jun 2004
Antwort Antwort
NicoDE
(Gast)

n/a Beiträge
 
#1

Re: Nur free oder FreeandNil

  Alt 30. Jun 2004, 00:56
Zitat von Christian Seehase:
OK, aber warum?
Eigentlich gibt es - was SysUtils.FreeAndNil angeht - keinen echten Grund dafür, da Temp ohnehin nicht validiert wird (deswegen 'sollte'...).
Dem Benutzer muss klar sein, dass eine doppelte Freigabe nicht möglich ist.

Eine eigene Funktion im Stile von...
Delphi-Quellcode:
procedure MyFreeAndNil(var Obj);
var
  Temp: TObject;
begin
{$IFDEF WIN32}
  Temp := TObject(InterlockedExchange(Integer(Obj), Integer(nil)));
  if Temp <> nil then
    Temp.Free;
{$ELSE}
  Temp := TObject(Obj);
  Pointer(Obj) := nil;
  if Temp <> nil then
    Temp.Free;
{$ENDIF}
end;
...kann in MT-Scenarien durchaus hilfreich sein.

Ist aber alles eine Frage des Kontextes in dem man die Funktion verwenden möchte. SysUtils.FreeAndNil hat den Vorteil, dass man doppelte Freigaben schneller bemerkt. Die oben skizzierte Version hat ihre Vorteile bei der einfacheren Handhabung von Objekten, welche von mehreren Threads verwendet werden (und auch nur dann, wenn man selbst kein Locking für die Freigabe implementiert hat, bzw. implementieren will - insofern bleibt die Nützlichkeit von MyFreeAndNil fragwürdig...).


Gruss Nico
  Mit Zitat antworten Zitat
Antwort Antwort


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 10:15 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