Смарт-указатели в C++ считаются более безопасными, чем обычные указатели, благодаря автоматическому управлению памятью. 24
Например, умный указатель std::unique_ptr ссылается на объект в динамической памяти и при выходе из области видимости уничтожает хранимый объект. 2 Это происходит потому, что в своём деструкторе умный указатель вызывает delete для объекта, на который ссылается, высвобождая тем самым память. 2
Также от проблем с внезапными исключениями программистов, использующих умные указатели, защищает механизм развёртывания стека (stack-unwinding). 2 Если на стеке был создан объект, а после этого было выброшено исключение, C++ гарантированно вызовет деструктор для этого объекта. 2
Важно понимать, что умные указатели — не панацея, и при использовании обычных указателей в программе всё равно остаётся возможность написать опасный код. 1