Junior — Middle
Тавзеҳ диҳед принсипи кори ҳисобкунаки истинод ва истифодаи он дар идоракунии хотира
sobes.tech AI
Ҷавоб аз AI
Референт санауыш — бұл әрбір объектке арналған белсенді сілтемелер санын бақылау механизмін қамтитын жадыны басқару жүйесі. Жаңа сілтеме объектке жасалғанда, санауыш артады, ал сілтеме жойылғанда немесе қол жетімсіз болғанда, кемиді. Санауыш нөлге жеткенде, объект пайдаланылмайды деп саналып, жадыдан босатыла алады.
Бұл тәсіл автоматты түрде объектілердің өмір сүру уақытын басқаруға көмектеседі және жады ағызуларын болдырмайды. Алайда, референт санауыштың кемшілігі — ол циклдік сілтемелерді дұрыс өңдей алмайды, яғни объектілер бір-біріне сілтеме жасаса, бірақ сырттан пайдаланылмаса, мәселе туындайды.
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;
}
}
};