Segmentation fault, programın erişmemesi gereken bir bellek bölgesine erişmeye çalıştığında oluşan bir çalışma zamanı hatasıdır.

Neden olur?

Sık nedenler: dizide sınır dışı erişim, null/geçersiz işaretçi (pointer) kullanımı ya da serbest bırakılmış belleğe erişim.

Hatalı kod

int dizi[3] = {1, 2, 3};
std::cout << dizi[5];   // sinir disi -> segfault olabilir

Doğru kod

int dizi[3] = {1, 2, 3};
for (int i = 0; i < 3; i++)   // sinir icinde kal
    std::cout << dizi[i];

Kontrol listesi

  • Dizi indekslerinin geçerli aralıkta olduğundan emin ol.
  • İşaretçileri kullanmadan önce null olup olmadığını kontrol et.
  • Serbest bıraktığın belleğe (delete) bir daha erişme.
  • Hataları bulmak için bir hata ayıklayıcı (gdb) veya derleyici uyarıları kullan.

C++ derslerimizle pratik yap.