ページ 11

segmentation faultって何故出るのですか?

Posted: 2015年6月28日(日) 14:01
by デスクトップ
C言語って配列でint x[10];って指定しても
x[100]とかx[200]にアクセスできますよね?それなのに何故このエラーが出るのでしょうか?

Re: segmentation faultって何故出るのですか?

Posted: 2015年6月28日(日) 14:05
by tk-xleader
 アクセスできない場所にアクセスしようとするからです。ちなみにx[100]とかが偶々アクセス可能な場所を示していた場合、変な場所のメモリが書き換えられたりしてたちの悪いバグの原因となります。

Re: segmentation faultって何故出るのですか?

Posted: 2015年6月28日(日) 14:40
by softya(ソフト屋)
C言語は軽量化と速度優先の設計で、そういう配列範囲外のチェックはしていません。
範囲外アクセスで、なにか問題が起きてもそれはプログラミングした人が責任を持つことになります。

> segmentation faultって何故出るのですか?

メモリでアクセス権限違反をしたからです。

Re: segmentation faultって何故出るのですか?

Posted: 2015年6月28日(日) 15:43
by デスクトップ
アクセス権限違反って具体的になんでしょうか?
Cの場合。


相変わらず「送信されたフォームは不正です。もう一度フォームを送信してみてください。」が多い…

Re: segmentation faultって何故出るのですか?

Posted: 2015年6月28日(日) 16:05
by softya(ソフト屋)
> アクセス権限違反って具体的になんでしょうか?

大雑把には、プログラム=アプリケーションに割り当て済みのメモリではないアドレスの場所の値を変更しようとした場合です。
【補足】 抜けがありました。割り当て済みでも書き込みできない所に書き込んだ場合もです。
細かく理解するには、仮想記憶やOSの仕組みを勉強して下さい。

> Cの場合。

言語は関係ありません。