Обычный указатель хранит адрес и сам не освобождает ресурс. Умный указатель добавляет правила владения и автоматическое освобождение, но не устраняет все ошибки времени жизни.
Чем обычный указатель отличается от умного указателя?
Обычный указатель хранит адрес и сам не освобождает ресурс. Умный указатель добавляет правила владения и автоматическое освобождение, но не устраняет все ошибки времени жизни.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Обычный указатель хранит адрес и сам не освобождает ресурс. Умный указатель добавляет правила владения и автоматическое освобождение, но не устраняет все ошибки времени жизни.
T* подходит для невладеющего доступа, если срок жизни объекта гарантируется извне. unique_ptr владеет единолично, не копируется и передаёт владение перемещением. shared_ptr допускает копирование с разделением владения; объект освобождается после исчезновения последнего сильного владельца. weak_ptr позволяет наблюдать объект и разрывать циклы владения.
Умный указатель может иметь специальный deleter для C-ресурса. Его наличие не делает содержимое объекта потокобезопасным и не защищает от использования сырого указателя после уничтожения владельца. Сначала определяйте, кто владелец, затем выбирайте тип.