Resource Acquisition Is Initialization
Z Wikipedii
Resource Acquisition Is Initialization, w skrócie RAII - popularny wzorzec projektowy w C++ i D. Technika łączy przejęcie i zwolnienie zasobu z inicjalizacją i deinicjalizacją zmiennych.
Przejęcie zasobu jest połączone z konstrukcją, a zwolnienie z automatyczną destrukcją zmiennej. Ponieważ wywołanie destruktora jest automatyczne gdy zmienna wyjdzie poza swój zasięg, jest zagwarantowane, że zasób zostanie zwolniony od razu gdy skończy się czas życia zmiennej. Jest to także prawdą przy wystąpieniu wyjątku. RAII jest kluczową koncepcją przy pisaniu kodu odpornego na wyjątki.
Technika RAII jest używana na przykład przy zakładaniu blokad wątków albo obsłudze plików.
Własność pamięci przydzielanej dynamicznie (za pomocą new) może być również kontrolowana za pomocą RAII. Do tego celu biblioteka standardowa C++ definiuje auto ptr. Czas życia dzielonych obiektów może być zarządzany przez smart pointer z semantyką dzielonej własności taki jak boost::shared_ptr definiowany przez bibliotekę Boost i oznaczony do włączenia do nowego standardu C++0x, lub Loki::SmartPtr z biblioteki Loki.