new ve delete Operatorleriyle Dinamik Hafiza Ayirmak


new ve delete operatörleri, C’nin malloc ve free fonksiyon çağrılarından dinamik hafıza ayırmanın(herhangi bir doğal veya kullanıcı tanımlamalı tip için) daha güzel yollarını sunar.

Örneğin aşağıdaki koda bakalım;

TipAdi * tipAdinaPtr;

ANSI C’de tipAdi tipinde bir nesneyi dinamik olarak olusturmak icin

tipAdinaPtr = malloc(sizeof(TipAdi));

şeklinde yazacaktık… Bu malloc fonksiyona çağrıyı ve sizeof operatörünün açık olarak kullanımını gerektirir… ANSI C’den onceki C surumlerinde, ayrica malloc tarafindan dondurulecek gostericinin tipini donusturecek

(tipAdi *) donusumunu de kullanacaktik.

malloc fonksiyonu ayrilmis hafiza bloğuna ilk deger atayabilecek yontemler saglanamaz. C++’ta basit olarak;

tipAdinaPtr = new TipAdi;

yazariz. new operatoru dogru boyutta bir nesne olusturur, nesnenin yapicisi cagirir ve dogru tipte bir gosterici dondurur. Eger new bos alan bulamazsa, ANSI/ISO standartlarindan onceki C++ sistemlerinde 0 gostericisi dondurur. Bu nesneyi yikmak ve alani bosaltmak icin delete operatorunu su sekilde kullanmaliyiz;

delete tipAdinaPtr;

C++, yeni olusturulan nesne icin ilk deger saglayici saglamamiza izin verir…

double * birseyePtr = new double(3,14159);

Bu yeni olusturulmus double nesnesine 3.14159 degerini atar.

10 Elemanli bir tamsayi dizisi asagidaki gibi olusturulup diziPtr’ye atanir.

int * diziPtr = new int[10];

Bu dizi

delete [] diziPtr;

İfadesiyle yok edilir…

Gordugumuz gibi malloc ve free yerine new ve delete kullanmak bir cok fayda saglamaktadir. Ozel olarak new yapiyi cagirir, delete ise sinifin yikicisini cagirir…

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s