c++ içerisinde std'de yer alırken, boost kütüphanesi içinde de mevcuttur.
kısacası şöyle bilinir: std::shared_ptr
kendisini c++'ta yer alan "smart pointers" yani akıllı göstericiler olarak tanımlamak gayet uygun olacaktır. boost üzerinde yer alan shared_ptr, create edilen bir object'in lifetime'ı ile ilgili ortaya çıkan sorunları çözmeye ve bellek yönetiminde karşılaşılan sorunları yok etmeye yarar.
shared_ptr, normalde unique_ptr ile aynı işlevi görüyor. ancak unique kullanımda raw value, multiple edilemediği için bellek yönetimi max optimal hale getirilemiyor. işte bu durumda shared_ptr kullanmak gerekiyor. shared_ptr referans sayacı da tutar.
bu arada kendisi hakkında:
constructor
ctor copy
destructor
kavramlarını da bilmek gerekiyor.
son olarak unique_ptr ile bir şeyler yapamadığınız durumlar auto_ptr mevcuttur. ikisi çok benzerdir. Ancak auto_ptr tek bir kaynağa erişir. Kullanımı yani lifetime'ı end of life'a düşünce self'i null olur. Yani auto_ptr aslında bir nullable pointer'dır. Null da bir value gibi kullanılarak alan tutarsa bu da sıkıntı yaratabilir.
Tam bu durumlarda shared_ptr kullanılır. Her shared_ptr end of life'da kill edilir. Bu sayede bellekte hiçbir şekilde yer tutmaz. Yine söylediğim gibi shared_ptr birden fazla erişime sahip olduğu için daha çok tercih edilir. eğer sözlük format'ı izin verirse şöyle örnekleyeyim:
auto_ptr == auto_ptr => if autoPtrFinish? ==> auto_ptr = null;