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
05.19.2009

Son zamanlarda web’de neden bu kadar az Türkçe C++ kaynağı olduğu sorusu kafamı kurcalıyor. Aşağıda bununla ilgili bazı düşüncelerimi yazarken, terimlerin Türkçe’leştirilmesinde yapabileceğim hatalar için önden özür dileyeyim. Bana Türkçe terim hatalarını bildirirseniz düzeltmeye çalışırım.

Birkaç tane giriş seviyesinde yazılmış eğitsel olmasına karşın, neredeyse hiç orta ve ileri seviye Türkçe yazıya rastlamadım (edit: yakın zamanda birkaç tane, orta ve ileri seviye diyebileceğim yazıya rastladım. Bunlar sayın Ali Çehreli tarafından yazılmışlar, kendi sitesinden ulaşılabilir. Bir göz atmanızı mutlaka tavsiye ederim). Orta seviyeden kastım, sınıf ve arayüz tasarımı, kalıtım ve polimorfizm, fonksiyon nesneleri, standart kütüphane ve boost’un kullanımı gibi konular. İleri seviyeden kastım da, generic programlama (şablonlar), bazı tasarım desenleri, exception safety ve RAII gibi konular. Read more

Share