Junior — Middle
132
Ақылды көрсеткіштердің жұмыс принципін және олар қалай жадыны басқаратынын түсіндіре аласыз ба?
Сұралған компаниялар
Датаджайл
AI-дан жауап
sobes.tech AI
Ақылды көрсеткіштер — бұл әдеттегі көрсеткіштер үстіне оралатын объектілер, олар динамикалық бөлінген жадтың өмір сүру уақытын автоматты түрде басқарады, бұл ұрлықтар мен екі рет босатудың қателіктерін болдырмайды.
C++-тағы негізгі ақылды көрсеткіштер түрлері:
std::unique_ptr— объектіні эксклюзивті иеленеді, көшіруге рұқсат бермейді, тек орын ауыстыруға мүмкіндік береді. Ақылды көрсеткіш жойылғанда, жад босатылады.std::shared_ptr— сілтемелер санын есептейді. Соңғыshared_ptrобъектіні көрсеткен кезде, жад босатылады.std::weak_ptr—shared_ptrбасқарған объектке әлсіз сілтеме, объектінің өмір сүру уақытын әсер етпейді, циклдік сілтемелерді болдырмау үшін пайдаланылады.
std::shared_ptr қолдану мысалы:
#include <memory>
#include <iostream>
struct Foo {
Foo() { std::cout << "Foo жасалды\n"; }
~Foo() { std::cout << "Foo жойылды\n"; }
};
int main() {
std::shared_ptr<Foo> sp1 = std::make_shared<Foo>();
{
std::shared_ptr<Foo> sp2 = sp1; // сілтемелер саны артады
std::cout << "Блок ішінде\n";
} // sp2 жойылады, сілтемелер саны азаяды
std::cout << "Блок сыртында\n";
} // sp1 жойылады, Foo объекті жойылады
Осылайша, ақылды көрсеткіштер жадты қауіпсіз басқаруға көмектеседі, delete шақыруын қажет етпей.