Sobes.tech
Back to questions
Junior — Middle
83

Объясните принцип работы счетчика ссылок и его использование в управлении памятью

Answer from AI

sobes.tech AI

Счетчик ссылок — это механизм управления памятью, при котором для каждого объекта хранится количество активных ссылок на него. Когда создается новая ссылка на объект, счетчик увеличивается, а когда ссылка удаляется или становится недоступной — уменьшается. Как только счетчик достигает нуля, объект считается неиспользуемым и может быть освобожден из памяти.

Этот подход помогает автоматически управлять временем жизни объектов, предотвращая утечки памяти. Однако у счетчика ссылок есть недостаток — он не может корректно обрабатывать циклические ссылки, когда объекты ссылаются друг на друга, но не используются извне.

Пример использования в C++:

class SharedPtr {
    T* ptr;
    int* ref_count;
public:
    SharedPtr(T* p) : ptr(p), ref_count(new int(1)) {}
    SharedPtr(const SharedPtr& sp) {
        ptr = sp.ptr;
        ref_count = sp.ref_count;
        ++(*ref_count);
    }
    ~SharedPtr() {
        if (--(*ref_count) == 0) {
            delete ptr;
            delete ref_count;
        }
    }
};