$1.99 Domains* at GoDaddy.com

C++ Global new ve delete Operatör Fonksiyonları

cders-126Aslında new ve delete işlemi yapıldığında çağırılacak global operatör fonksiyonu vardır ve bu fonksiyon derleyiciyi yazanlar tarafından kütüphane içerisine yerleştirilmiştir. Eğer programcı bu operatör fonksiyonlarını yeniden yazarsa kütüphanedeki değil programcının yazdığı çağırılacaktır. new ve delete operatör fonksiyonları aşağıdaki prototipe uygun yazılmak zorundadır.

 

void * operator new(unsigned size);

void * operator new [](unsigned size);

void operator delete(void *ptr);

void operator delete [](void *ptr);

 

/*—–glop_new.cpp—–*/

 

Derleyici global new operatör fonksiyonuna parametreyi new operatörünün kullanımındaki tahsisat miktarı olarak geçirir. Yani örneğin:

 

p = new int; ile p = operator new(sizeof(int)); arasında fark yoktur.

 

New operatörü kullanıldığında aslında derleyici ifadeyi global new operatörü fonksiyonunu çağırma ifadesine dönüştürür. Aslında new bir fonksiyon çağırma işlemi anlamına gelir.

            Kütüphane içerisinde new ve delete operatör fonksiyonlarının köşeli parantezli fonksiyonları da vardır. Ancak bunlar global köşeli parantezsiz new ve delete operatör fonksiyonlarını çağırırlar.

 

void * operator [] (unsigned size)

{

    ….

    p = operator new(sizeof(size));

    ….

}

 

Biz köşeli parantezli new ve delete operatör fonsksiyonlarını yazmasak bile yazdığımız new ve delete operatör fonksiyonları yine çağırılacaktır.

 

new int[n]; işlemi ile operator new [](sizeof(int) * n); aynıdır.

 

Eski derleyicilerde(borland v3.1 gibi) new ve delete operatörlerinin köşeli parantezli versionlarına ilişkin operatör fonksiyonlarını yazmak geçerli değildir. 

Kategoriler: C++ Programlama, Yazılım

Tags: , , ,

Yorumlar

Yorum Yok

Yorumunuzu Ekleyin

Yorum eklemek için giris yapmalısınız.