セグメンテーション違反 単語

セグメンテーションイハン

1.1千文字の記事

セグメンテーション違反とは、プログラムエラーの一つである。シグナル名に由来して短くSEGVともいう。 セグメンテーションフォルト。segfault。一般保護違反。

概要

簡単に言うとプログラムメモリの変なところを操作しようとするとこのエラー(例外)が発行される。 これをやってしまったプログラムは、SIGSEGVというシグナルがOSカーネルから送信され、「セグメンテーション違反です」などという メッセージとともに落ちる。これを連発するプログラムは品質が低いと言うことになる。

かつて全世界人間恐怖に陥れたブルースクリーンはだいたいこれが原因である。 最近ではこなれてきてシステム全部がだめになると言うことは少なくなったが、 「問題が発生したため、xxx を終了します。ご不便をかけて申し訳ありません。」というふざけたメッセージで 利用者を不愉快にさせるのは変わりない。

プログラムバグによって起こるエラーなので、利用者側ではこれを直すことができない。 できることといえば、開発者にバグ修正を依頼、SEGVが起こる機を使わないということぐらいしかない。

具体的には以下のような状況でSEGVが起こる:

SEGVはこのような細なミスで起こる。このためメモリ周りのバグは見つけにくく、機追加や仕様変更を繰り返していくとどこでどうやってバグが引き起こされたのかがすぐにわからなくなってしまうことがしばしばある。 まずSEGVが起こった状況と原因から特定していかないといけないため、動作環境を少しずつ変えながらステップ実行を行うという単調な作業を繰り返すハメになる。これで開発者はうんざりしてやる気がなくなってしまい、仕様ということにしたり、最後には投げ出してしまうことも多い。というわけでバグ報告をするときは、動作環境再現方法を書いてもらえるととても助かるんです。

以下は効なメモリ領域を操作することによってSEGVを起こす簡単なサンプル。

int main(void) {
    int *p;
    *p = 1;
    /* この時点でpはどこ指しているかわからないのでおそらくSEGVになる。 */
    return 0;
}


 

関連動画

関連コミュニティ

ニコニコミュニティは2024年8月に終了しました。

関連項目

この記事を編集する

掲示板

おすすめトレンド

ニコニ広告で宣伝された記事

記事と一緒に動画もおすすめ!
もっと見る

急上昇ワード改

最終更新:2025/12/12(金) 11:00

ほめられた記事

最終更新:2025/12/12(金) 10:00

ウォッチリストに追加しました!

すでにウォッチリストに
入っています。

OK

追加に失敗しました。

OK

追加にはログインが必要です。

           

ほめた!

すでにほめています。

すでにほめています。

ほめるを取消しました。

OK

ほめるに失敗しました。

OK

ほめるの取消しに失敗しました。

OK

ほめるにはログインが必要です。

タグ編集にはログインが必要です。

タグ編集には利用規約の同意が必要です。

TOP