0Pricing
C++ Academy · Ders

Yaygın Bellek Hataları

Sızıntılardan ve geçersiz işaretçilerden kaçının

Yaygın Bellek Hataları, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.

Bellek Sızıntıları

Öbek belleği ayrılıp hiç serbest bırakılmadığında bir bellek sızıntısı oluşur. Program, artık erişemediği belleği tüketmeye devam eder.

void leak() {
    int* p = new int(5);
    // missing delete p;  -> leaked
}

Sarkan İşaretçiler

Sarkan işaretçi, daha önce serbest bırakılmış belleği gösterir. Bu işaretçinin gösterdiği değere erişmek tanımsız davranıştır.

int* p = new int(7);
delete p;
// *p = 3;   // BUG: dangling access

Çift Serbest Bırakma

Aynı işaretçi üzerinde iki kez delete çağırmak öbeği bozar ve çoğu zaman programın çökmesine neden olur.

int* p = new int(1);
delete p;
// delete p;   // BUG: double free

Serbest Bırakma Sonrası Kullanım

Nesne silindikten sonra bir işaretçi üzerinden okuma veya yazma, serbest bırakma sonrası kullanımdır; güvenlik açıklarının yaygın kaynaklarından biridir.

Arabellek Taşması

Bir dizinin sonunun ötesine yazmak, ilgisiz belleğin üzerine yazar. Her zaman sınırlar içinde kalın.

int a[3] = {1, 2, 3};
// a[3] = 99;   // BUG: out of bounds

Eşleşmeyen delete

new[] ile ayrılan bellekte delete kullanmak (veya tersini yapmak) tanımsız davranıştır. Bunları eşleştirin.

int* arr = new int[4];
// delete arr;   // BUG: should be delete[] arr;
delete[] arr;     // correct

Başlatılmamış İşaretçiler

Başlatılmamış bir işaretçi rastgele bir değer taşır. Her zaman geçerli bir adresle veya nullptr ile başlatın.

#include <iostream>

int main() {
    int* p = nullptr;   // safe default
    if (!p) std::cout << "not set\n";
}

Yerel Adresleri Döndürme

Bir yığın yerelinin adresini döndürmek anında sarkan bir işaretçi oluşturur; çünkü yerel değişken, dönüş sırasında yok olur.

int* bad() {
    int x = 10;
    return &x;   // BUG: x is gone
}

Akıllı İşaretçiler Sızıntıları Önler

Ham sahiplerin yerine std::unique_ptr kullanmak çoğu sızıntıyı ve çift serbest bırakmayı ortadan kaldırır: temizleme işlemi otomatik ve tek seferliktir.

#include <iostream>
#include <memory>

int main() {
    auto p = std::make_unique<int>(5);
    std::cout << *p << "\n";
}   // freed exactly once, automatically

Hataları Yakalamaya Yarayan Araçlar

AddressSanitizer ve Valgrind gibi araçlar, çalışma zamanında sızıntıları, çift serbest bırakmaları ve sınır dışı erişimleri algılar. Bunları sınama sürecinizin bir parçası hâline getirin.

Önlemek Algılamaktan İyidir

En iyi çözüm, ham sahipliği tamamen kullanmaktan kaçınmaktır: std::vector gibi kapsayıcıları ve akıllı işaretçileri kullanarak belleği kitaplığın sizin için doğru biçimde yönetmesini sağlayın.

Hızlı Kontrol

Bellek hataları konusundaki anlayışınızı sınayın.

Özet

Klasik bellek hatalarını öğrendiniz: sızıntılar, sarkan işaretçiler, çift serbest bırakma, serbest bırakma sonrası kullanım, arabellek taşmaları ve eşleşmeyen delete. Bunları akıllı işaretçiler ve kapsayıcılarla önleyin; kalanları da bellek denetleyicileri ve Valgrind ile yakalayın.

Sıkça Sorulan Sorular

“Yaygın Bellek Hataları” dersi ücretsiz mi?

Evet — “Yaygın Bellek Hataları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C++ Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C++ Academy kursu toplamda 4 dersten oluşur.

“Yaygın Bellek Hataları” dersinde ne öğreneceğim?

Sızıntılardan ve geçersiz işaretçilerden kaçının C++ Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C++ Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C++ Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Yaygın Bellek Hataları” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C++ Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C++ Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Yığın Ayırma
  2. new/delete ile Öbek Ayırma
  3. Nesne Ömrü
  4. Yaygın Bellek Hataları
← C++ Academy Sayfasına Dön