Junior — Middle
Koje su razlike između standardnog neobavijenog pokazivača i pametnog pokazivača std::unique_ptr u C++?
sobes.tech АИ
Одговор од АИ
Основне разлике између стандардног необрађеног показивача (raw pointer) и паметног показивача std::unique_ptr у C++:
-
Управљање животним веком објекта:
- Raw pointer једноставно чува адресу, али не управља животним веком објекта. Потребно је ручно позвати delete.
- std::unique_ptr аутоматски брише објекат када изађе из области видљивости, спречавајући цурење меморије.
-
Власништво:
- Raw pointer не поседује објекат, може се слободно копирати и преносити.
- std::unique_ptr поседује објекат искључиво, копирање је забрањено, може се само премештати.
-
Безбедност:
- Raw pointer може довести до грешака ако заборавите да избршете објекат или га користите након брисања.
- std::unique_ptr помаже у избегавању таквих грешака захваљујући аутоматском управљању.
Пример коришћења std::unique_ptr:
#include <memory>
std::unique_ptr<int> ptr = std::make_unique<int>(42);
// ptr аутоматски брише објекат када изађе из области видљивости
Овим начином, std::unique_ptr олакшава управљање динамичким меморијом и повећава безбедност кода.