Интеллектуальные указатели (smart pointers) в C++ отличаются от обычных указателей тем, что обеспечивают правильное и своевременное удаление динамически выделяемой памяти. 1
Они содержат адрес (как правило, адрес выделенной динамической памяти), и их можно использовать для обращения к объектам по этому адресу. 2 Но главное отличие состоит в том, что при использовании интеллектуальных указателей не нужно беспокоиться об освобождении памяти с помощью операторов delete или delete[]. 2 Вся выделенная память, используемая интеллектуальными указателями, будет освобождаться автоматически, когда она станет не нужна. 2
Таким образом, smart-указатели позволяют упростить и обезопасить управление памятью. 2
В современном C++ необработанные указатели используются только в небольших блоках кода с ограниченной областью, циклах или вспомогательных функциях, когда важна производительность и вероятность проблем с владением низкая. 3