Junior — Middle
Objasnite princip rada brojača referenci i njegovu upotrebu u upravljanju memorijom
sobes.tech АИ
Одговор од АИ
Brojač referenci je mehanizam za upravljanje memorijom u kojem se prati broj aktivnih referenci na svaki objekat. Kada se kreira nova referenca na objekat, brojač se povećava, a kada se referenca briše ili postane nedostupna, smanjuje. Kada brojač dostigne nulu, objekat se smatra neupotrebljivim i može biti oslobođen iz memorije.
Ovaj pristup pomaže automatski upravljati životnim vekom objekata i sprečava curenje memorije. Međutim, brojač referenci ima nedostatak: ne može pravilno da procesuira ciklične reference, kada objekti ukazuju jedan na drugog, ali nisu korišćeni spolja.
Primer upotrebe u 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;
}
}
};