C言語関係掲示板

過去ログ

No.593.Segmentation fault (core dumped)とは?

[戻る] [ホームページ]
No.5623

エラーの意味がわかりません・・・
投稿者---あゆ(2003/03/26 12:40:48)


コンパイルはうまくいくんですけど、
実行すると
Segmentation fault (core dumped)
というエラーが出てしまいます。
これはどういう意味なのでしょうか?


No.5625

Re:エラーの意味がわかりません・・・(Segmentation fault)
投稿者---kikk(2003/03/26 14:53:26)


ども。


>Segmentation fault (core dumped)

アクセスが禁止されているメモリ領域(Segment)にアクセスしました。
(メモリの様子を(coreファイルに)吐き出しておきました)

というよう感じでしょうか。


おそらく、配列の添え字が範囲を超えたとか、初期化していないポインタで
メモリ参照をした、free()した領域をアクセスした、等が原因になると思います。
また、非常に大きなローカル変数(配列)を確保したときにも発生します。

デバッガを使いステップ実行するか、assert()やprintf()等で変数の値を
表示しつつどこまでは実行できたかを確認し、不正なメモリアクセスの
場所を特定・修正してください。

それと、C FAQ
http://www.catnet.ne.jp/kouno/c_faq/c16.html#8
も参考にしてください。


なお、生成されるcore(またはstackdump)ファイルはデバッグに使わないので
あれば削除してかまいません。

ちなみにcoreは、昔、メモリに使っていたものです。メモリが現在のような
半導体ではなかったころ、1bitを1つのコア(1mmくらいのドーナツ型の磁性体)
で保持し、それを電流の流れる金網にまとめたものを1次記憶装置として
使っていました。


では。