为什么我的2d int segfault数组带有malloc?

时间:2018-09-02 08:54:01

标签: c arrays segmentation-fault int malloc

此代码不分段 我尝试对其进行“调试”,以便知道何时发生段错误,但不明白为什么

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++;
}

感谢您的帮助;)

1 个答案:

答案 0 :(得分:1)

如果数组的大小在第一个代码段中为A和B,则变量z的值增加1,而在第二个代码中,变量的值A增加并得到第0个元素每个。

但是由于z应该计算元素总数,所以当然会溢出。