Sobes.tech
Junior — Middle

Kas saaksite selgitada, mis on nutikad näitajad ja kuidas nad töötavad ressursside haldamisel?

sobes.tech AI

Vastus AI-lt

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

Основные виды умных указателей:

  • std::unique_ptr — владеет объектом эксклюзивно, нельзя копировать, только перемещать. При уничтожении умного указателя объект автоматически удаляется.
  • std::shared_ptr — реализует подсчет ссылок. Несколько указателей могут владеть одним объектом, и объект удаляется, когда последний shared_ptr уничтожается.
  • std::weak_ptr — слабая ссылка на объект, управляемый shared_ptr, не увеличивает счетчик ссылок, используется для предотвращения циклических зависимостей.

Пример с unique_ptr:

#include <memory>
#include <iostream>

int main() {
    std::unique_ptr<int> p(new int(42));
    std::cout << *p << std::endl; // 42
    // Объект будет автоматически удален при выходе из области видимости
    return 0;
}

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