Akıllı işaretçiler arasında en güçlü özelliklere sahip olan boost::shared_ptr<>‘den bahsetmeye geldi sıra. Bu işaretçi sayesinde en zorlu bellek yönetim ve nesne ömrü problemlerini çözebiliyoruz.

Read more

Share

std::auto_ptr, geçen yazıda bahsettiğimiz boost::scoped_ptr’den bir adım daha yetenekli bir akıllı işaretçidir. Tıpkı scoped_ptr gibi auto_ptr de bir nesnenin sahibidir, ve kapsam dışına çıkılırken o nesnenin silinmesini sağlar.

 
void hede(){
    std::auto_ptr<T> p( new T() );
    p->hodo();
    …
}    // kapsamdan cikilirken T nesnesi silinir

Yine bu fonksiyonda ne olursa olsun (erken bir return ya da istisna) auto_ptr sayesinde temel istisna güvenliği (yani istisnalar tetiklendiği takdirde bellek sızdırmama garantisi) sağlanmış olur.

Ancak scoped_ptr’den farklı olarak auto_ptr, kopyalanabilir  ve atanabilir. kopyalama/atama durumlarında nesnenin sahipliği el değiştirir. Başka bir deyişle bir nesneye herhangi bir anda yalnız bir auto_ptr sahip olabilir. Bir auto_ptr bu şekilde sahiplik kaybettiğinde resetlenmiş olur.

Read more

Share

boost-library

boost::scoped_ptr en basit akıllı işaretçi türü. Yaptığı iş sadece bir tane nesneye işaret etmek ve o nesnenin tek sahibi olup, silinirken de nesneyi de kendisi ile beraber silmek. 

Read more

Share
05.20.2009

İşaretçiler(pointer), C++ dünyasına aslında C’den gelen bir kavram. C’ye de assembler’dan gelmişti. C++ programlarında pekçok hata bir kenarından işaretçiler ile ilgili oluyor. İşaretçilerle yapılan aritmetik işlemler, işaretçilerin sıfırlanmasının unutulması vs.

Yine C++ programlarında en sık yapılan hatalardan biri de bellek yönetimi hataları. Sistemden alınan ve iş bittikten sonra geri verilmeyen bellek, veya geri verilmiş belleğe bakmaya devam eden işaretçileri kullanmak vs.

İşte bu iki genel hata grubunun kesişiminde bulunan önemli bir bölümünü çözmek için akıllı işaretçiler (smart pointer) geliştirilmiş.

Read more

Share