Segmentation fault
や
Bus error
だとおもう.これらの原因はたいてい(ほぼ確実に)
配列などで領域を確保していないところにまで
アクセスしようとしているということだ.
例えば,
int num[10];
の配列に対して,
for(i = 0; i < 20; i++){
num[i] = 1;
}
このように,配列が確保していない部分まで
値を入れているとエラーが出る場合がある.
出る場合があるというのは,ここで確保していない
部分に値を入れても,その部分とどこかが競合しない
限り,エラーにならない場合がある.つまり,
int num[10], num2[30];
for(i = 0; i < 20; i++){
num[i] = 1;
}
for(i = 0; i < 30; i++){
num2[i] = 1; //ここら辺でsegmentation fault
}
というプログラムを書いたとき,コメントが書いてある
部分で,Segmentation fault を起こす場合がある.
解決法としては,
*segmentation fault が起きた部分以前の部分をチェックする.
*for文で繰り返す回数を増やしてみる
などが挙げられる.
どうしてもこの部分はあっているだろうというところで
エラーが起きる場合は,そのようなところをチェックして
みると,いいかもしれない.
0 件のコメント :
コメントを投稿