Edisi pembelajaran bahasa Indonesia. Kode dan keluarannya tetap seperti aslinya.
Segmentation fault dalam C
Temukan akses memori yang tidak sah dan perbaiki penyebab kegagalannya.

Segmentation fault sering berarti akses ke memori yang tidak diizinkan. Penyebabnya mencakup pointer null atau belum diinisialisasi, indeks di luar batas, dan penggunaan objek yang sudah dibebaskan. Perilaku tak terdefinisi tidak selalu langsung menyebabkan program berhenti.
Perkecil program menjadi contoh yang dapat mengulangi masalah. Untuk setiap pointer, periksa objek, masa hidupnya, dan indeks yang digunakan. Periksa malloc sebelum menulis dan jangan mengembalikan alamat variabel lokal otomatis.
Jika lingkungan mendukung, aktifkan informasi debug dan AddressSanitizer. Debugger membantu memeriksa stack dan nilai variabel. Perbaiki akses yang salah, bukan hanya baris tempat gejalanya muncul.
Kode C
#include <stdio.h>
int main(void)
{
int values[] = {10, 20, 30};
size_t count = sizeof values / sizeof values[0];
for (size_t i = 0; i < count; ++i) {
printf("values[%zu] = %d\n", i, values[i]);
}
return 0;
}Buka di kompilerPertanyaan umum
Mengapa kode dan keluarannya tetap dalam bahasa Inggris?
Kata kunci, pengenal, dan teks yang diperiksa tes dipertahankan agar program tidak berubah. Penjelasan dan kontrol telah diterjemahkan.