21 Mart 2025 Cuma

C++ Dinamik Bellek Yönetimi Nedir ?

 


C++'da dinamik bellek yönetimi, programın çalışma zamanında (runtime) belleği tahsis etme ve serbest bırakma işlemidir. Bu, programcının ihtiyaçlarına göre değişen bellek gereksinimlerini karşılamak için esneklik sağlar.

Dinamik Bellek Yönetiminin Temel Kavramları:

  • Heap: Dinamik olarak tahsis edilen belleğin bulunduğu alandır.
  • new operatörü: Heap'ten bellek tahsis etmek için kullanılır.
  • delete operatörü: Tahsis edilen belleği serbest bırakmak için kullanılır.
Dinamik Bellek Yönetiminin Avantajları:

  • Esneklik: Programın çalışma zamanında bellek gereksinimlerine göre bellek tahsis edilebilir.
  • Verimlilik: İhtiyaç duyulmayan bellek serbest bırakılarak bellek kullanımı optimize edilebilir.
  • Dinamik Veri Yapıları: Bağlı listeler, ağaçlar gibi dinamik veri yapıları oluşturmak için gereklidir.
Dinamik Bellek Yönetiminin Dezavantajları:

  • Bellek Sızıntısı: Tahsis edilen belleğin serbest bırakılmaması durumunda bellek sızıntısı oluşabilir.
  • Asılı İşaretçiler: Serbest bırakılan belleğe erişmeye çalışan işaretçiler asılı işaretçilere neden olabilir.
  • Parçalanma: Sürekli bellek tahsisi ve serbest bırakılması sonucunda bellek parçalanması oluşabilir.
Dinamik Bellek Yönetimi Nasıl Çalışır?

  1. Bellek Tahsisi: new operatörü kullanılarak heap'ten istenen boyutta bellek tahsis edilir.
  2. Bellek Kullanımı: Tahsis edilen bellek, işaretçiler aracılığıyla kullanılır.
  3. Bellek Serbest Bırakma: delete operatörü kullanılarak tahsis edilen bellek serbest bırakılır.
Örnek:

C++

#include <iostream>

int main() {
// Dinamik olarak bir tamsayı dizisi tahsis et
int* dizi = new int[5];

// Diziye değerler ata
for (int i = 0; i < 5; i++) {
dizi = i * 2;
}

// Diziyi kullan
for (int i = 0; i < 5; i++) {
std::cout << dizi << " ";
}
std::cout << std::endl;

// Diziyi serbest bırak
delete[] dizi;

return 0;
}

Bu örnekte, new int[5] ifadesiyle 5 tamsayıdan oluşan bir dizi dinamik olarak tahsis edilir. delete[] dizi ifadesiyle de tahsis edilen bellek serbest bırakılır.

Önemli Notlar:

  • Dinamik bellek yönetimi dikkatli bir şekilde yapılmalıdır.
  • Bellek sızıntılarını ve asılı işaretçileri önlemek için bellek serbest bırakma işlemleri doğru bir şekilde yapılmalıdır.
  • Akıllı işaretçiler (smart pointers) kullanılarak bellek yönetimi hataları azaltılabilir.


Benzer Yayınlar

C++ Dinamik Bellek Yönetimi Nedir ?
4/ 5
Oleh

Abone Olun

Yazılarımızı beğeniyor musunuz?Abone Olun Yazılarımı Kaçırmayın.

Lütfen yorum yaparken şunlara dikkat ediniz:

Küfürlü, siyasi veya huzur bozucu yorumlar yapmamaya,
Reklam, spam gibi yorumlar yapmamaya.