セグメンテーション違反
セグメンテーション違反(英語: segmentation fault)とは、ソフトウェアの実行時のフォールト状態(あるいはフォールト条件)の一種であり、ソフトウェアがアクセス禁止とされているメモリ上のエリアにアクセスしようとしたり、メモリ上の位置ごとに設定されているルールに違反してメモリにアクセスしようとするときに起こるものである。略してセグフォールト(英: segfault)とも。
たとえば、あるソフトウェアがオペレーティングシステム(OS)を上書きしようとしたり、そのソフトウェアに関してはリードオンリーと設定されている位置へ当該ソフトが書き込みをしようとする時に起こる。
UNIX系のオペレーティングシステム上では、不正なメモリにアクセスをするプロセスはSIGSEGVシグナルを受け取る。Microsoft Windows上では、不正なメモリにアクセスするプロセスはSTATUS_ACCESS_VIOLATION例外を受け取る。
なおx86プロセッサによるシステムでは、この種のイベントはen:general protection fault扱いになり、 MC68000のようなプロセッサによるシステムはこれらのイベントを「アドレスエラー」もしくは「バスエラー」として参照しようとする傾向にある。
セグメント方式は、メモリ管理およびOS保護の手法の一種である。大部分の用途のためにページング方式に置き換えられつつあるが、セグメンテーションの専門用語はまだ多く使用されている。セグメンテーション違反はその一例である。オペレーティングシステムの中にはメインメモリ管理の方針としてページング方法が使用されているが、いくつかの論理レベルでまだセグメンテーションを持つものがある。