当我编译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上运行正常。
答案 0 :(得分:3)
您所显示的代码(我可以看到)没有任何问题。
您应该采取的第一步是在Valgrind下运行您的程序,并修复它报告的任何错误。
如果Valgrind报告您不理解的错误,请使用Valgrind输出更新您的问题。
如果Valgrind没有报告任何内容,请在GDB下运行您的程序,打印i
,current
,size[current]
等值,然后使用您的GDB会话更新您的问题。
答案 1 :(得分:2)
我怀疑size[current]
大于200
。