Einzelnen Beitrag anzeigen

Robotiker
(Gast)

n/a Beiträge
 
#27

AW: Intelligente Objekte - automatische Freigabe von Referenzen

  Alt 6. Mär 2012, 07:46
Ich frage hier nochmals nach:

Wenn man also Objektreferenzen verwendet, die automatisch genullt werden, wenn das referenzierte Objekt freigegeben wird, wie sieht dann so ein Programm aus? Wie sichert man sich gegen spontan auftretende Nil-Referenzen ab? Kann jemand hier mal ein Beispiel nennen?
Wie das aussehen kann, kannst du in der Doku der vom C++ Builder verwendeten Bibliothek nachlesen:
http://www.boost.org/doc/libs/1_49_0.../smart_ptr.htm

Ein weak_ptr hat z.B. eine Memberfunktion expired() mit der man prüfen kann, ob er noch gültig ist.

Greift man auf einen ungültigen Pointer zu gilt
Zitat:
When the last shared_ptr to the object goes away and the object is deleted, the attempt to obtain a shared_ptr from the weak_ptr instances that refer to the deleted object will fail: the constructor will throw an exception of type boost::bad_weak_ptr, and weak_ptr::lock will return an empty shared_ptr.

Zitat:
Corba sieht wirklich interessant aus.
Ich dachte, Corba wäre out.
Es ist gewissermaßen unter seinem Eigengewicht zusammengebrochen.

Aber Absichern vor spontanen Verschwinden bei Zugriff durch mehrere Threads schreit nach Synchronisation, sollte eigentlich mit einer beliebigen Lösung des Reader-Writer-Problems behandelt werden können.
Ja, siehe
http://www.boost.org/doc/libs/1_49_0...m#ThreadSafety

Versetze Dich halt mal in eine frühere Entwicklungsstufe zurück.
Die Themen Corba und Smartpointer waren zu Zeiten des C++ Builder 3/4/5 sehr modern.

Corba ist in der Versenkung verschwunden, die Smartpointer sind heute ISO-Standard.

Geändert von Robotiker ( 6. Mär 2012 um 09:31 Uhr)
  Mit Zitat antworten Zitat