bugün

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;

source0
/
source1
/
shared_ptr --> source2
\
source3
\
source4

if sharedPtrFinish? shared_ptr.kill

gibi bir pseudo code anlamaya yardımcı olacaktır.

yine de counting kavramı çok önemli olduğu için atamaları, creating aşamalarını bilmeyenlerce kullanılmaması gerekir.

bilgisayar mühendisliği öğrencilerine hediyem olsun.
© copyright 2005 - 2026