Sobes.tech
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;
        }
    }
};