本文へスキップ
BecomeCoder

C言語のエラー · エラー1

Segmentation fault ― 触ってはいけないメモリを触った(実行時)

無効なポインタや配列範囲外へのアクセスで、OS がプログラムを強制終了します。通称「セグフォ」。コンパイルは通るのに実行した瞬間に落ちるのが厄介です。

出るコード

int *p = NULL;
*p = 42;   // NULL の指す先に書き込む

エラーメッセージ

Segmentation fault (core dumped)

直し方

ポインタは使う前に malloc で確保し NULL でないか確認します。配列は添字が範囲内かを確かめます。gcc -g -fsanitize=address でビルドすると場所を特定できます。