Görebildiğim gibi, akıllı işaretçiler birçok gerçek dünyadaki C ++ projesinde yaygın olarak kullanılıyor.
Her ne kadar bazı akıllı işaretçiler RAII ve mülkiyet aktarımlarını desteklemede açıkça faydalı olsalar da, paylaşılan işaretçileri varsayılan olarak "çöp toplama" yöntemi olarak kullanma eğilimi vardır , böylece programcının bu kadar tahsisat hakkında düşünmesi gerekmez. .
Paylaşılan işaretçiler neden Boehm GC gibi uygun bir çöp toplayıcıyı entegre etmekten daha popülerdir ? (Ya da onların gerçek GC'lerden daha popüler oldukları konusunda hemfikir misiniz?)
Konvansiyonel GC'lerin referans saymaya göre iki avantajı olduğunu biliyorum:
- Konvansiyonel GC algoritmaları referans çevrimleriyle bir problemi yoktur .
- Referans sayımı genellikle uygun bir GC'den daha yavaştır .
Referans sayma akıllı işaretçiler kullanmanın nedenleri nelerdir?
std::unique_ptr
yeterlidir ve bu nedenle çalışma zamanı performansı açısından ham göstergelere sıfır ek yükü vardır.std::shared_ptr
Her yerde kullanarak , sahiplik semantiğini de gizleyerek, otomatik kaynak yönetimi dışındaki akıllı işaretçilerin en önemli avantajlarından birini kaybettiniz - kodun arkasındaki amacın net bir şekilde anlaşılması.