Dinamik Bellek

Dinamik Bellek Kullanımı

New

  • Programın çalışması esnasında özel komutlar kullanarak bellekten yer alınıp kullanılmasına dinamik bellek kullanımı adı verilir.
  • Dinamik değişkenler için bellekte ayrılan yere yığın(heap) adı verilir.
  • Dinamik bellek kullanımını new ve delete komutları ile gerçekleştiririz.
  • New komutu ile bellekten istediğimiz veri tipi boyutunda bir yer alabiliriz.

Kullanımı:

Dinamik Bellek Kullanımı

new VeriTipi               // Tek bir yer almak için kullanılır.
new VeriTipi[ElemanSayisi] // Bir dizi yer almak için kullanılır.
 
int *ptr;                       //ptr adlı tamsayı gösterecek bir gösterge tanımlanır
ptr= new int;                   //Bellekten tamsayı kadar yer ayrılır,yerin adresi ptr’ye atanır
*ptr=5;                         //Bellekten alınan yeni yere 5 atanır.
 
/*Gösterge tanımı ve new komutu tek bir komut halinde de yazabiliriz.*/
 
int *ptr=new int;
 
/*Dinamik bir değişkenin tanımlanması sırasında ilk ataması da yapılabilir.*/
 
int *ptr=new int (5);
 
int *diz;                   // diz isimli tamsayı gösterecek bir gösterge tanımlanır
diz=new int[5];            // Bellekten 5 tamsayı dizisi için yer ayrılır ve dizi adresine atanır      
diz[1]=8;                 // Bellekten alınan dizinin 1. elemanına 8 atanır.

Delete

  • Bellekten new ile aldığımız yerler, kullanımları sonu erse veya program bitse bile yeniden kullanılamazlar. Bu nedenle bellekten aldığımız hücreleri program bitmeden delete komutu ile silmemiz gerekir.

Kullanımı:

delete göstergeAdı;
delete [] göstergeAdı;
 
int *g=new int;          // g göstergesine tamsayı boyutunda yerin adresi atanır.
*g=10;                   // g göstergesinin gösterdiği yere 10 atanır.
cout<<*g;                // atanan 10 değeri yazılır.
delete g;                // ayrılan yer belleğe geri döndürülür.
 
int *diz;             // diz isimli tamsayı gösterecek bir gösterge tanımlanır.
diz=new int [5];      // Bellekten 5 tamsayı dizisi için yer ayrılır dizinin adresi diz’e atnır
diz[1]=8;            // Bellekten alınan dizinin 1. elemanına 8 atanır.
 
delete [] diz;           // yaratılan dizinin tüm elemanları belleğe geri döndürülür.

Kimler Neler Demiş?

  Abone ol  
Bildir