Rainer Grimm hat am 1. Dezember 2017 die Ressourcenregeln der C++ Core Guidelines erläutert. RAII, kurz für Resource Acquisition Is Initialization, bindet etwa Speicher oder Sperren an die Lebensdauer eines verwaltenden Objekts. Dessen Destruktor übernimmt die Freigabe.
Die damalige Regel R.1 zeigt den Nutzen bei regulärer Rückkehr und bei Ausnahmen mit Stack-Unwinding: Aufräumcode muss nicht auf jedem Fehlerpfad separat stehen. Bei abruptem Prozessabbruch ist eine Destruktorausführung damit nicht garantiert. RAII allein garantiert auch keine deadlockfreie Reihenfolge mehrerer Sperren.
Rohe Zeiger sind nicht automatisch besitzlos
Nach Regel R.3 sollen rohe Zeiger als nichtbesitzend behandelt werden. Das ist eine Entwurfskonvention, keine vom Sprachtyp erzwungene Eigenschaft. Gerade alte C-Schnittstellen können Besitz übertragen. Deshalb muss die Verantwortung für die Freigabe ausdrücklich geklärt werden.
std::unique_ptr repräsentiert exklusiven Besitz, std::shared_ptr gemeinsamen Besitz. Ein std::weak_ptr verlängert die Objektlebensdauer nicht; ein erfolgreicher lock()-Aufruf liefert vorübergehend einen besitzenden shared_ptr. Die Guidelines bevorzugen unique_ptr, wenn gemeinsamer Besitz nicht nötig ist.
Für Engine-Schnittstellen folgt daraus eine konkrete Review-Frage: Wer hält ein Objekt am Leben, und welche Aufrufer leihen es nur aus? Bereits die Destruktor-Regeln der C++ Core Guidelines behandeln die Freigabe über Basisklassen. Eine klare Besitzkonvention ersetzt nicht die Prüfung solcher Typ- und Lebensdauerfehler.
Archivhinweis: Grundlage sind Grimms Beitrag vom Dezember 2017 und die Guideline-Fassung vom 27. November 2017. Es handelt sich um Programmierempfehlungen, nicht um eine neu veröffentlichte C++-Version. Das C++-Logo dient als Symbolbild.

