Junior — Middle
Explicați principiul de funcționare al numărătorului de referințe și utilizarea sa în gestionarea memoriei.
sobes.tech AI
Răspuns de la AI
Contorul de referințe este un mecanism de gestionare a memoriei în care se păstrează un număr de referințe active pentru fiecare obiect. Când se creează o nouă referință la un obiect, contorul crește, iar când referința este eliminată sau devine inaccesibilă, scade. Când contorul ajunge la zero, obiectul este considerat neutilizat și poate fi eliberat din memorie.
Această abordare ajută la gestionarea automată a duratei de viață a obiectelor, prevenind scurgerile de memorie. Cu toate acestea, contorul de referințe are un dezavantaj: nu poate gestiona corect referințele ciclice, atunci când obiectele se referă reciproc, dar nu sunt utilizate din exterior.
Exemplu de utilizare în 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;
}
}
};