当我编译c文件时,gcc不返回任何错误,但在运行时发生分段错误。 debugging器显示这部分代码发生故障:
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上运行良好。
你所显示的代码没有问题(我可以看到)。
您应该采取的第一步是在Valgrind下运行您的程序,并修复它报告的任何错误。
如果Valgrind报告您不明白的错误,请使用Valgrind输出更新您的问题。
如果Valgrind没有报告任何内容,请在GDB下运行你的程序,打印i
, current
, size[current]
等值,然后用你的GDB会话更新你的问题。
我怀疑目前的size[current]
大于200
。