Sobes.tech
Junior — Middle

Leg uit hoe de referentieteller werkt en hoe deze wordt gebruikt bij geheugenbeheer.

sobes.tech AI

Antwoord van AI

De referentieteller is een geheugenbeheersmechanisme waarbij een telling wordt bijgehouden van actieve verwijzingen naar elk object. Wanneer een nieuwe verwijzing naar een object wordt gemaakt, wordt de teller verhoogd, en wanneer de verwijzing wordt verwijderd of ontoegankelijk wordt, wordt deze verlaagd. Wanneer de teller nul bereikt, wordt het object als niet-gebruikt beschouwd en kan het uit het geheugen worden vrijgegeven.

Deze aanpak helpt bij het automatisch beheren van de levensduur van objecten en voorkomt geheugenlekken. Echter, de referentieteller heeft een nadeel: hij kan cyclische verwijzingen niet correct afhandelen, wanneer objecten naar elkaar verwijzen maar niet extern worden gebruikt.

Voorbeeld van gebruik in 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;
        }
    }
};