Resource management
R.20
Используйте `unique_ptr` или `shared_ptr` для выражения владения
Причина
Они позволяют предотвратить утечки ресурсов.
Пример
Рассмотрим:
void f()
{
X* p1 { new X }; // плохо: p1 утечёт
auto p2 = make_unique<X>(); // хорошо: единственное владение
auto p3 = make_shared<X>(); // хорошо: разделённое владение
}
Утечёт только объект, использованный для инициализации p1.
Контроль
- (Простой) Предупреждать, если результат
newприсваивается сырому указателю. - (Простой) Предупреждать, если результат функции, возвращающей сырой владеющий указатель, присваивается сырому указателю.