此代码不分段 我尝试对其进行“调试”,以便知道何时发生段错误,但不明白为什么
range(int **range, int min, int max) //prototype
*range = (int *)malloc(sizeof(int) * (max - min));
if (*range == NULL)
return (0);
while (min < max)
{
range[0][z] = min; //Doesn't segfault
printf("%d\n",range[0][z]);
min++;
z++;
}
这是
range(int **range, int min, int max)//prototype
*range = (int *)malloc(sizeof(int) * (max - min));
if (*range == NULL)
return (0);
while (min < max)
{
*range[z] = min;//Segfault Here
printf("%d\n",range[0][z]);
min++;
z++;
}
感谢您的帮助;)
答案 0 :(得分:1)
如果数组的大小在第一个代码段中为A和B,则变量z
的值增加1,而在第二个代码中,变量的值A增加并得到第0个元素每个。
但是由于z
应该计算元素总数,所以当然会溢出。