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.