В чем разница умного указателя и обычного в C++?

Обычный указатель в C++ — это просто адрес в памяти, который не управляет временем жизни объекта. Программист сам отвечает за выделение и освобождение памяти, что может привести к утечкам или ошибкам двойного удаления.

Короткий ответ

Что ответить на собеседовании

Обычный указатель в C++ — это просто адрес в памяти, который не управляет временем жизни объекта. Программист сам отвечает за выделение и освобождение памяти, что может привести к утечкам или ошибкам двойного удаления.

Подробный разбор

Ответ с пояснениями

Обычный указатель в C++ — это просто адрес в памяти, который не управляет временем жизни объекта. Программист сам отвечает за выделение и освобождение памяти, что может привести к утечкам или ошибкам двойного удаления.

Умный указатель — это класс-обёртка, который автоматически управляет временем жизни объекта. Например, std::unique_ptr владеет объектом и удаляет его, когда указатель выходит из области видимости. std::shared_ptr считает количество ссылок и удаляет объект, когда последний указатель уничтожается.

Пример с std::unique_ptr:

#include <memory>

void example() {
    std::unique_ptr<int> ptr = std::make_unique<int>(42);
    // ptr автоматически удалит объект при выходе из функции
}

Таким образом, умные указатели помогают избежать утечек памяти и ошибок управления ресурсами, делая код безопаснее и проще.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее