通信用語の基礎知識 IPv4
戻る
参加者募集中

セグメントエラー

辞書:電算用語の基礎知識 計算機OS機能編 (TCOS)
読み:セグメントエラー
外語:segmentation fault 英語
品詞:名詞
2010/10/26 作成

セグメント(プロセスに割り当てられたメモリー範囲)を超えた範囲に読み書きした際に発生するエラー。セグメンテーションフォルト

このエラーは様々な場面で発生するが、原因の検出が難しいことも多い。

エラー発生時にはSIGSEGVシグナルが送信される。標準の動作はコアダンプであり、「セグメントエラー(coreを出力しました)」などと表示して止まる。

不正なポインターへのアクセス

配列などを定義し、その配列サイズを超えるようなアクセスをしたときに発生する。

しかも問題は、数バイト程度超過して書き込んでもセグメントエラーにならないことがあり、しかしヒープ等の内部管理は破壊されていて誤動作を引き起こす。

int main()
{
  int i, buf[10];
  for(i = 0; i <= 20; ++i)
  {
    buf[i] = i;
  }
}

動作結果は次の通り

> ./a.out
セグメントエラー(coreを出力しました)

strcpyなどの関数で、バッファサイズを超えて長い文字列を複写したような場合も、同様である。

スタックオーバーフロー

再帰呼び出しが無限ループに陥ってしまったなどの時にスタックが枯渇し、スタックオーバーフローが発生する。

int hoge()
{
  hoge();
}
int main()
{
  hoge();
}

動作結果は次の通り

> ./a.out
セグメントエラー(coreを出力しました)

関連する用語

セグメンテーションフォルト
SIGSEGV

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.00g (28-Jun-2014)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club