在ubuntu中执行C代码时出现分段错误

时间:2011-12-30 15:04:49

标签: c linux segmentation-fault runtime-error

当我编译c文件时,gcc不返回任何错误,但在运行时发生了分段错误。调试器显示故障发生在代码的这一部分:

      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];
默认情况下,

电流为0.

我正在尝试将2d数组(arr)中的数组内容复制到临时数组中, 我试过不使用malloc但仍然是同样的问题。

ps:程序在windows上运行正常。

2 个答案:

答案 0 :(得分:3)

您所显示的代码(我可以看到)没有任何问题。

您应该采取的第一步是在Valgrind下运行您的程序,并修复它报告的任何错误。

如果Valgrind报告您不理解的错误,请使用Valgrind输出更新您的问题。

如果Valgrind没有报告任何内容,请在GDB下运行您的程序,打印icurrentsize[current]等值,然后使用您的GDB会话更新您的问题。

答案 1 :(得分:2)

我怀疑size[current]大于200