Ressourcenbelegung ist Initialisierung

Ressourcenbelegung ist Initialisierung

Ressourcenbelegung ist Initialisierung, meist abgekürzt durch RAII, für englisch resource acquisition is initialization, bezeichnet eine in bestimmten Programmiersprachen (wie z. B. C++) verbreitete Programmiertechnik. Dabei wird die Steuerung der Belegung und der Freigabe von Betriebsmitteln (auch Ressourcen genannt) an den Gültigkeitsbereich von Variablen gekoppelt.

Die Belegung einer Ressource ist an den Konstruktoraufruf einer Variablen eines benutzerdefinierten Typs gebunden. Die automatische Freigabe wird durch das Verlassen des Gültigkeitsbereichs ausgelöst (am Blockende, bei Ausnahmeauslösung, durch Rückgabe an den Aufrufer, usw.). Dabei sorgt der implizite Destruktoraufruf der Variablen für die Wiederfreigabe der Ressource.

Ein typischer Einsatzfall für RAII ist die Verwaltung von Datei-Operationen und die Steuerung von Prozess- oder Thread-Sperren in nebenläufigen Programmen. Da Destruktoren von Variablen benutzerdefinierter Typen beim Verlassen des Gültigkeitsbereiches insbesondere auch unter Ausnahmebedingungen automatisch aufgerufen werden, ist RAII auch ein Schlüsselkonzept zum Schreiben von ausnahmefestem Code.

Alle Sprachen mit benutzerdefinierbaren Konstruktoren und Destruktoren ermöglichen die Anwendung der Programmiertechnik RAII. Dazu gehören beispielsweise C++, Ada und D.

In C++ kann auch die Eigentümerschaft von mit new erworbenem Speicher über diese Technik gesteuert werden. In der C++-Standardbibliothek ist zu diesem Zweck beispielsweise auto_ptr definiert.

Beispiel

Das folgende Beispielprogramm ist in der Programmiersprache C++ verfasst:

#include <string>
#include <stdio.h>
 
class Datei {
   FILE* datei_;
 
public:
   Datei(const std::string& name)
   : datei_( fopen(name.c_str(), "w+") ) {} // Öffnen der Datei
 
   ~Datei() {
       fclose(datei_); // Schließen der Datei
    }
 
   void Ausgabe(const std::string& text) {
        if (datei_)
            fputs(text.c_str(), datei_);
   }
};
 
int main() {
   Datei datei("aufzeichnung.txt"); // Öffnen der Datei (Anfordern der Ressource)
   datei.Ausgabe("Hallo Welt!");
 
   // Mit dem Ende der Funktion endet auch der Gültigkeitsbereich (Scope)
   //  des Objekts datei. Daher wird der Destruktor Datei::~Datei()
   //  aufgerufen, der die Datei schließt → Freigabe der Ressource
}

Weblinks


Wikimedia Foundation.

Игры ⚽ Поможем написать курсовую

Schlagen Sie auch in anderen Wörterbüchern nach:

  • RAII — Ressourcenbelegung ist Initialisierung, meist abgekürzt durch RAII, für engl. resource acquisition is initialization, bezeichnet eine in der Programmiersprache C++ verbreitete Programmiertechnik, die die Steuerung der Belegung und Freigabe von… …   Deutsch Wikipedia

  • Resource Acquisition Is Initialization — Ressourcenbelegung ist Initialisierung, meist abgekürzt durch RAII, für engl. resource acquisition is initialization, bezeichnet eine in der Programmiersprache C++ verbreitete Programmiertechnik, die die Steuerung der Belegung und Freigabe von… …   Deutsch Wikipedia

  • C-Plusplus — C++ Paradigmen: imperativ, strukturiert, objektorientiert, generisch Erscheinungsjahr: 1983 Entwickler: Bjarne Stroustrup …   Deutsch Wikipedia

  • C-plus-plus — C++ Paradigmen: imperativ, strukturiert, objektorientiert, generisch Erscheinungsjahr: 1983 Entwickler: Bjarne Stroustrup …   Deutsch Wikipedia

  • C plus plus — C++ Paradigmen: imperativ, strukturiert, objektorientiert, generisch Erscheinungsjahr: 1983 Entwickler: Bjarne Stroustrup …   Deutsch Wikipedia

  • Cplusplus — C++ Paradigmen: imperativ, strukturiert, objektorientiert, generisch Erscheinungsjahr: 1983 Entwickler: Bjarne Stroustrup …   Deutsch Wikipedia

  • Constructor — Als Konstruktoren und Destruktoren werden in der Programmierung spezielle Prozeduren bezeichnet, die beim Erzeugen und Zerstören von Objekten oder Variablen aufgerufen werden. Konstruktoren bringen die Objekte in einen definierten Anfangszustand …   Deutsch Wikipedia

  • Destruktor — Als Konstruktoren und Destruktoren werden in der Programmierung spezielle Prozeduren bezeichnet, die beim Erzeugen und Zerstören von Objekten oder Variablen aufgerufen werden. Konstruktoren bringen die Objekte in einen definierten Anfangszustand …   Deutsch Wikipedia

  • Konstruktor — Als Konstruktoren und Destruktoren werden in der Programmierung spezielle Prozeduren bezeichnet, die beim Erzeugen und Zerstören von Objekten oder Variablen aufgerufen werden. Konstruktoren bringen die Objekte in einen definierten Anfangszustand …   Deutsch Wikipedia

  • C++ — Paradigmen: Multiparadigmen (funktional, generisch, imperativ, objektorientiert, prozedural, strukturiert) Erscheinungsjahr: 1979 Entwickler: Bjarne Stroustrup …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”