2011-12-30 17 views
2

cファイルをコンパイルすると、gccはエラーを返しませんが、実行時にセグメンテーションフォルトが発生します。ubuntuでCコードを実行するとセグメンテーションエラーが発生する

 int q=size[current]; 
     int *temp; 
     temp = malloc (sizeof(int)*q); 
     for(i=0;i<size[current];i++) 
     temp[i]=arr[current][i]; 

ARRが定義されている:デフォルトで

 int arr[20][200]; 

電流Iはの内容をコピーしようとしています0

あるデバッガは、故障がこのコードの一部で発生していることを示しました2次元配列(arr)内の配列を一時配列に置き換えます 私はmallocを使用しないようにしようとしましたが、同じ問題が残っています。

ps:プログラムはウィンドウ上で正常に動作します。

+0

'' arr''の初期化方法を教えてください。 – Fred

+1

'arr'とは何ですか?問題を集めて展示するものを教えていただけますか? – nmichaels

+0

currentとarrの定義を追加できますか?また、すべての警告を有効にしてコンパイルすることをお勧めします。まだ行っていない場合は、ヒントが得られる可能性があります。 – gnometorule

答えて

3

表示されているコードには何も問題はありません(私が見ることができます)。

まず、Valgrindの下でプログラムを実行し、報告されたエラーを修正します。

あなたが理解していないエラーをValgrindが報告した場合は、質問をValgrindの出力に更新してください。

Valgrindのは、何も報告GDBの下で、あなたのプログラムを実行し、icurrentsize[current]の印刷値、などとGDBセッションであなたの質問を更新していない場合。

2

size[current]200よりも大きいと思われます。

関連する問題