Dalam ilmu komputer, kesalahan segmentasi atau galat segmentasi (bahasa Inggris:segmentation faultcode: en is deprecated , sering disingkat menjadi segfault atau secara resmi diklasifikasikan sebagai pelanggaran akses di lingkungan Windows) adalah kondisi galat fatal yang dipicu oleh perangkat keras komputer bersistem manajemen memori ketika sebuah program komputer mencoba mengakses lokasi memori yang dilarang atau tidak valid.[1]
Kondisi ini merupakan salah satu mekanisme pertahanan terpenting pada sistem operasi modern untuk menjaga keamanan memori. Dengan membatasi ruang gerak setiap aplikasi agar hanya beroperasi di dalam ruang alamat (address space) miliknya sendiri, sistem operasi dapat mencegah sebuah aplikasi yang rusak atau jahat menimpa data milik aplikasi lain atau merusak data sensitif milik kernel sistem operasi utama.
Penyebab umum
Kesalahan segmentasi hampir selalu disebabkan oleh adanya kutu pemrograman (software bug) di dalam kode sumber yang melakukan manipulasi alamat memori tingkat rendah secara keliru. Beberapa pemicu paling umum meliputi:
Dereferensi penunjuk nol (Null Pointer Dereference): Mencoba membaca atau menulis data melalui sebuah variabel penunjuk yang masih bernilai kosong atau menunjuk ke alamat 0x0 (alamat terlindung).
Limpahan penyangga (Buffer Overflow): Menulis data melampaui batas alokasi akhir suatu larik sehingga meluap dan menerobos area segmen memori tetangga yang dilindungi.
Penunjuk menjuntai (Dangling Pointer): Menggunakan penunjuk untuk mengakses lokasi memori yang statusnya sudah dibebaskan (di-free atau dihapus) oleh sistem.
Limpahan tumpukan (Stack Overflow): Pemanggilan fungsi rekursif yang terlalu dalam dan tidak berujung sehingga menghabiskan seluruh kapasitas ruang memori tumpukan panggilan (call stack).
Contoh kasus
Berikut adalah contoh kode sumber sederhana dalam bahasa C yang dipastikan akan memicu kesalahan segmentasi seketika saat dieksekusi karena mencoba menulis data ke lokasi yang ditunjuk oleh penunjuk nol:
#include<stdio.h>intmain(){int*ptr=NULL;// Mendeklarasikan penunjuk yang mengarah ke nol*ptr=99;// ERROR: Mencoba menulis nilai ke alamat nol (memicu segfault)return0;}
Penanganan oleh sistem operasi
Ketika arsitektur prosesor (seperti unit manajemen memori atau MMU) mendeteksi adanya upaya pelanggaran batas memori oleh suatu instruksi program, prosesor akan mengeluarkan interupsi perangkat keras khusus ke sistem operasi.
Sistem operasi kemudian akan mengambil tindakan tegas dengan menghentikan paksa aplikasi tersebut secara tidak terencana (crash) untuk melindungi sistem secara keseluruhan.
Pada sistem mirip Unix (seperti Linux, macOS, atau FreeBSD), sistem operasi akan mengirimkan sinyal khusus bernama SIGSEGV (singkatan dari Signal Segmentation Violation) ke proses aplikasi yang bermasalah. Umumnya sistem juga akan mencetak tulisan "Segmentation fault" pada terminal konsol dan menghasilkan berkas core dump untuk membantu pemrogram melakukan pengawakutuan.
Pada sistem Microsoft Windows, kondisi ini ditangani melalui mekanisme penanganan eksepsi terstruktur (SEH) dengan kode kesalahan spesifik 0xC0000005 (Access Violation).
↑Black, Paul E. "segmentation fault". Dictionary of Algorithms and Data Structures (dalam bahasa Inggris). National Institute of Standards and Technology. Diakses tanggal 2 Juni 2026.