Back to questions
Junior — Middle
84
Объясните принцип работы счетчика ссылок и его использование в управлении памятью
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;
}
}
};