在ubuntu中执行C代码时出现分段错误
编译c文件时,gcc不会返回任何错误,但在运行时会出现分段错误。调试器显示错误发生在这部分代码中:在ubuntu中执行C代码时出现分段错误,c,linux,segmentation-fault,runtime-error,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]; 当前默认值为0 我试图将2d数组(arr)中的数组内容复制到临时数组中, 我尝试过不使用ma
int q=size[current];
int *temp;
temp = malloc ( sizeof(int)*q);
for(i=0;i<size[current];i++)
temp[i]=arr[current][i];
当前默认值为0
我试图将2d数组(arr)中的数组内容复制到临时数组中,
我尝试过不使用malloc,但仍然存在相同的问题
ps:该程序在windows上运行良好。您显示的代码没有问题(我可以看到) 您应该采取的第一步是在Valgrind下运行程序,并修复它报告的任何错误 如果Valgrind报告了您不理解的错误,请使用Valgrind输出更新您的问题
如果Valgrind没有报告任何内容,请在GDB下运行您的程序,打印
i
,current
,size[current]
,等等的值,并在GDB会话中更新您的问题。我怀疑size[current]
大于200
您可以演示如何初始化arr
?什么是arr
?你能给我们一些汇编和展示问题的东西吗?你能添加当前和arr的定义吗?此外,我建议您在编译时启用所有警告,如果您尚未启用,因为这可能会给您一个提示。如何填充size[current]
在循环中I
的上限?学习使用gcc-g-Wall
编译并使用gdb
调试器。
int arr[20][200];