Очистка ресурсов в деструкторах при использовании умных указателей работает следующим образом: когда умный указатель больше не используется, то есть выходит из области видимости, срабатывает его деструктор и происходит очистка памяти. 1
Эта техника называется Resource Acquisition Is Initialization (RAII): класс оборачивает динамический ресурс (файл, сокет, подключение к базе данных, выделенная память), который должным образом удаляется/закрывается в своём деструкторе. 1 Таким образом гарантируется, что не произойдёт утечки ресурсов. 1
Кроме того, в умных указателях можно задать функциональный объект, который отвечает за освобождение ресурсов. 4 Например, с их помощью можно закрывать подключения к БД, открытые файлы, вызывать определённые функции. 4
Также некоторые смарт-указатели стандартной библиотеки C++ имеют функцию-член сброса, которая освобождает владение указателем. 2 Это полезно, когда нужно освободить память, принадлежащую интеллектуальному указателю, не дожидаясь, пока он окажется вне области. 2