Junior — Middle
Vysvetlite princíp fungovania počítadla odkazov a jeho použitie pri správe pamäte.
sobes.tech AI
Odpoveď od AI
Počítadlo odkazov je mechanizmus správy pamäte, pri ktorom sa sleduje počet aktívnych odkazov na každý objekt. Keď je vytvorená nová referencia na objekt, počet sa zvýši, a keď je referencia odstránená alebo sa stane nedostupnou, zníži sa. Keď počet dosiahne nulu, objekt sa považuje za nepoužívaný a môže byť uvoľnený z pamäte.
Tento prístup pomáha automaticky riadiť životnosť objektov a predchádzať únikom pamäte. Avšak, počítadlo odkazov má nevýhodu: nedokáže správne spracovať cyklické odkazy, keď objekty odkazujú na seba navzájom, ale nie sú používané zvonku.
Príklad použitia v 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;
}
}
};