Online C Compiler
Buka di kompiler

Edisi pembelajaran bahasa Indonesia. Kode dan keluarannya tetap seperti aslinya.

Segmentation fault dalam C

Temukan akses memori yang tidak sah dan perbaiki penyebab kegagalannya.

Buka di kompiler

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 kompiler

Pertanyaan 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.