- 締切済み
セグメンテーションエラー
初めまして。 余り詳しくないのですが、Cでバイナリファイルを読み込み、10分ごとにDBに書き込む永久ループのプログラムを作っています。 コンパイルも出来て、動くのですが、3回ぐらい書き込むと セグメンテーションエラーで止まります。時には、6-7回書き込めたりします。 DBに書き込むところを省いても、エラーが出てしまうのですが、どのような部分を調べていったらいいですか?
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
- Trick--o--
- ベストアンサー率20% (413/2034)
- galluda
- ベストアンサー率35% (440/1242)
- charmer29-2
- ベストアンサー率25% (41/159)
- galluda
- ベストアンサー率35% (440/1242)
関連するQ&A
- セグメンテーション違反とは??
linuxでC言語のプログラムを構築しています。 gccでコンパイルしたときにセグメンテーション違反という エラーが出てしまいます。 セグメンテーション違反とは一体なんの ことなんでしょうか? メモリのことだと思ってるんですが、原因がよくわかりません。C言語初心者なので わかりやすく教えて頂けるとありがたいです。
- ベストアンサー
- C・C++・C#
- セグメンテーション違反について
C言語であるプログラムを作っています。コンパイルは上手くできるのですが、実行するとセグメンテーション違反と出てしまいます。それもセグメンテーション違反と出るときと出ないときがあり困っています。そこでプログラム中のどこがセグメンテーション違反を指しているのか知りたいのですが、何かセグメンテーション違反の場所を教えてくれるようなオプションはないでしょうか? プログラムソースを見てもらうのが一番いいと思いますが、行数が1000行を超えているので断念しました。OSはLinuxでコンパイラはgccです。どなたかご教授お願いします。
- ベストアンサー
- C・C++・C#
- セグメンテーション違反について
現在、FORTRANを使ってプログラミングを行っています。 プログラムを作って、コンパイルまではうまくいき、いざファイルを実行してみると、「セグメンテーション違反です」という文字が出てしまいました。 いったい何が原因でそのような現象が起こってしまったのでしょうか。 ご教授願えればと思います。
- 締切済み
- その他(プログラミング・開発)
- セグメンテーションエラー
C++ on Vine (バージョン共にわからず)です。 セグメンテーションエラーは、メモリの領域破壊の時にでるようですが、 その他の原因はありますか? また、メモリの領域破壊とは、 配列の要素数以上に要素を詰め込もうとしたとき 以外の要因はありますか? ポインタを使えばいろいろ破壊できそうですが、 そういうのはなしで。
- ベストアンサー
- C・C++・C#
- セグメンテーション違反
C言語を使用しています。 構造体に値をいれようとしたら、コンパイルは出来るのですが、実行時に 「セグメンテーション違反です (core dumped)」 となってしまい、それ以上行えません。 構造体と代入したい変数との型は、合っています。 いろいろ本などで見ましたが、何が原因かわからず困っています。 教えてください。 宜しくお願いします。
- ベストアンサー
- C・C++・C#
- この数式でセグメンテーションエラーがでてしまいます
c言語でこの数式を入れるとコンパイルは可能なのですがセグメンテーションエラーが出てしまいます。 どこが間違えているのかご指摘お願いします。 w[j+1] = -1*w[j-1] + ( (2+h*h) * w[j] ) / ( 1+h*h*w[j]*w[j] ) + ( ( h*h*h*h*w[j]*w[j]*w[j] ) * ( 1-2*w[j]*w[j] ) ) /(1+h*h*w[j]*w[j] ) ; このような数式なのですがどこが間違えているのでしょうか?
- ベストアンサー
- C・C++・C#
- セグメンテーション・フォールト
UNIXで、CよりOracleのSQL*Loaderを使用しています。 CSVファイル->Oracleのテーブル でデータを挿入する際に、テーブルのカラムサイズが 足りずにエラーが発生し、最大エラー件数を超えたので 処理がエラーで終了しました。 その際に、 セグメンテーション・フォールト(coredump) というメッセージが表示されます。 ついでに補足するならば、Cのプログラムを直接起動すると、 上記エラーメッセージ出力後、プロセスは終了しますが、 別プログラムより起動した場合(UID=root)、 プロセスが終了してくれません。 上記メッセージの意味と、なぜrootからだと プロセスが終了しないのか、が分かりません。 どなたかお分かりになる方、よろしくお願いします。
- ベストアンサー
- その他(OS)
- セグメンテーションエラーの原因がわからず困っています
以下のプログラムで”セグメンテーションエラーです”の文字が表示され上手いこと動きません。 何がダメなのか、ご助言を頂けないでしょうか。どうぞよろしくお願いします。環境はCentosです。 #include<stdlib.h> #include<string.h> main(){ char s[11]; FILE *fp; fp = popen("netstat -s |grep total","r"); if(fp = NULL){ printf("reading error"); exit(-2); } FILE *fp2; fp2 = fopen("file.txt","r"); fscanf(fp,"%9s",s); int a; printf("%s\n",s); a = atol(s); printf("%ld",a); pclose(fp); fclose(fp2); }
- ベストアンサー
- C・C++・C#
- PHPのセグメンテーション違反に対する例外処理について
PHPのセグメンテーション違反に対する例外処理について 再帰呼び出しのプログラム(error_seg.php)を作成し、Linuxのシェルで $ php error_seg.php と実行しました。 実行環境: PHPのバージョン:5.2.10 Linuxのバージョン:2.6.18-164.15.1.el5 (mockbuild@builder16.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)) #1 SMP Wed Mar 17 11:37:14 EDT 2010 プログラムは下記の通りです。 <?php $cnt=0; function func(){ global $cnt; $cnt++; print $cnt . "回目の呼び出し\n"; func(); } try{ func(); }catch(Exception $e){ echo "例外発生:" . $e->getMessage()."\n"; } ?> ※このプログラムは、 http://d.hatena.ne.jp/syonbori_tech/20090414/1239717538 のサイトを参考にして作りました。 この結果、 1回目の呼び出し 2回目の呼び出し ・・・ 26187回目の呼び出し 26188回目の呼び出し セグメンテーション違反です と表示され、セグメンテーション違反を再現させました。 ※何回目でセグメンテーション違反が発生するかは、 その都度異なります。 プログラム中で、try-catchの例外処理を入れたのですが、 例外処理されないようです。セグメンテーション違反に対して 例外処理をすることはできないのでしょうか。 できるとすれば、どのように記述をすればよいでしょうか。
- ベストアンサー
- PHP
- fclose()でセグメンテーション違反
C言語でのファイル読み込みで、ファイルを開いてデータを読み込んで表示することはできたのですが、最後のfclose(fp)でセグメンテーション違反になります。一番最後のwhileループをコメントアウトしたところセグメンテーション違反にはならなかったので、ここに何か問題があると思うのですが、どこが悪いのかが分かりません... #include<stdio.h> #include<stdlib.h> main(void){ FILE *fp; int i=0 , j=0 ,cnt = 0 , c=0; char *name="data.txt"; float *buf1,*buf2; if((fp = fopen(name,"r")) == NULL){ printf("error\n"); return 0; } else{ while((c = getc(fp)) != EOF) { if(c == '\n') cnt++; } printf(">>%d<<\n",cnt+1); rewind(fp); buf1 = (float *)malloc( (int)(cnt/2) +1); buf2 = (float *)malloc( (int)(cnt/2) +1); /*ここからがおかしい?*/ while(1){ if( fscanf( fp ,"%f %f",&buf1[i],&buf2[i])==EOF )break; printf("%f %f\n",buf1[i],buf2[i]); i++; } fclose(fp); } return 0; } なぜセグメンテーション違反になっているのでしょうか?
- ベストアンサー
- C・C++・C#
補足
gdb やってみました。 ・・・gdbが動きませんでした。ふぅ。