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.