Resource acquisition is initialization (inicjowanie przy pozyskaniu zasobu), w skrócie RAII – popularny wzorzec projektowy w C++ i D. Technika łączy przejęcie i zwolnienie zasobu z inicjowaniem i usuwaniem 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. Stanie się tak również przy wystąpieniu wyjątku. RAII jest kluczową koncepcją przy pisaniu kodu odpornego na błędy.

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 w C++) może być również kontrolowana za pomocą RAII. Do tego celu biblioteka standardowa C++11 definiuje inteligentne wskaźniki: std::unique_ptr dla obiektów z jednym właścicielem oraz std::shared_ptr dla obiektów współdzielonych. Podobny efekt można uzyskać także za pomocą std::auto_ptr (z C++98, aktualnie usunięty ze standardu) i boost::shared_ptr z biblioteki Boost lub Loki::SmartPtr z biblioteki Loki.

📚 Artikel Terkait di Wikipedia

Unified Extensible Firmware Interface

7A (wrzesień 2017) UEFI Shell: 2.2 (styczeń 2016) UEFI PI (Platform Initialization): 1.6 (maj 2017) PI Distribution Packaging: 1.1 (styczeń 2016) ACPI

Rust (język programowania)

bezpieczeństwo pamięci, zarządzanie pamięcią poprzez Resource Acquisition Is Initialization, bezpieczeństwo współbieżności w koncepcji Ownership i Borrowing, system

Tryb wiązania bloków zaszyfrowanych

sumowany modulo dwa z losowo wygenerowanym wektorem początkowym IV (ang. initialization vector), wektor ten nie musi być utrzymywany w tajemnicy. Operacje wykorzystywane

Leniwe inicjowanie

code examples Use Lazy Initialization to Conserve Resources Description from the Portland Pattern Repository Lazy Initialization of Application Server

ReLU

 Su YanhuiY., George EmG.E. Karniadakis George EmG.E., Dying ReLU and Initialization: Theory and Numerical Examples [online], arXiv.org, 15 marca 2019 [dostęp

Technical Report 1

umożliwiające odporność na wyjątki, z użyciem idiomu Resource Acquisition Is Initialization (RAII). Cztery moduły dodane do nagłówka <functional>: function oparty

Logtalk

world true. Definiowanie obiektu: :- object(moj_pierwszy_obiekt).  :- initialization((write('Hello world'), nl)).  :- public(p1/0). p1 :- write('To jest

Wektor inicjujący

Wektor inicjujący (ang. initialization vector, IV) – ciąg bitów o stałej długości wykorzystywany jako dodatkowe dane wejściowe do algorytmów kryptograficznych