Sobes.tech
Junior — Middle

C++'ta standart sarmalayıcı olmayan gösterici ile akıllı gösterici std::unique_ptr arasında ne farklar vardır?

sobes.tech yapay zeka

AI'dan gelen yanıt

C++'ta standart bir ham (raw) gösterici ile std::unique_ptr akıllı gösterici arasındaki temel farklar:

  • Nesnenin yaşam süresinin yönetimi:

    • Ham gösterici sadece adresi tutar, nesnenin yaşam süresini yönetmez. El ile delete çağrısı gerekir.
    • std::unique_ptr, kapsam dışına çıkıldığında nesneyi otomatik olarak siler, bellek sızıntılarını önler.
  • Mülkiyet:

    • Ham gösterici nesneye sahip değildir, serbestçe kopyalanabilir ve aktarılabilir.
    • std::unique_ptr, nesneye tekil sahiplik sağlar, kopyalama engellenmiştir, sadece taşınabilir.
  • Güvenlik:

    • Ham gösterici, nesli silmeyi unutur veya silindikten sonra kullanılırsa hatalara yol açabilir.
    • std::unique_ptr, otomatik yönetimi sayesinde bu hataları önlemeye yardımcı olur.

std::unique_ptr kullanım örneği:

#include <memory>

std::unique_ptr<int> ptr = std::make_unique<int>(42);
// ptr, kapsam dışına çıkıldığında nesneyi otomatik olarak siler

Bu şekilde, std::unique_ptr dinamik belleğin yönetimini kolaylaştırır ve kodun güvenliğini artırır.