shared ptr

entry1 galeri0
    1.
  1. 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.
    0 ...
© 2025 uludağ sözlük