Sobes.tech
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 олакшава управљање динамичким меморијом и повећава безбедност кода.