「セグメンテーション違反」の版間の差分
削除された内容 追加された内容
→例: sourceタグを使用。 |
|||
15行目:
このコードを含むプログラムが[[コンパイラ|コンパイル]]された時、"hello world"の[[文字列]]リテラルはリードオンリーとしてマークされたプログラム[[実行ファイル|バイナリ]]のセクションに置かれる; ロードされたとき、オペレーティングシステムはそれをリードオンリーのメモリーセグメントで他の文字列と[[定数]]データで置き換える。
実行されたとき、''s''変数は、文字列の位置を指定するように設定され、変数を通して''H''文字をメモリに書き込むことが企てられるが、結果はセグメンテーション違反が起こる。このようなプログラムをコンパイルして実行すると、例えば次のような[[ランタイムライブラリ|ランタイム]]エラーを起こす:
<source lang="text">
</ 以下は[[GNUデバッガ]]からのスタックトレースである:
<source lang="text">
</ 一方で、[[Linux]]上のgcc 4.1.1はデフォルトで
<source lang="text">
</ セグメンテーション違反が起こる条件とそれらをそれら自身で宣言する方法はオペレーティングシステム特有のものである。
非常に一般的なプログラムエラーは[[Null|Nullポインタ]]の[[参照 (情報工学)|参照]]外し(Nullポインタを通した読み込みもしくは書き込み、C言語では"存在しないオブジェクトへのポインタ"を意味し、エラーインディケータとして使用される)であるので、大抵のオペレーティングシステムは
== 関連項目 ==
|