Почему мой 2d массив int segfault с malloc? - PullRequest
0 голосов
/ 02 сентября 2018

Этот код не является сигфо Я пытаюсь "отладить" его, чтобы знать, когда это происходит, но не понимаю, почему

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 голосов
/ 02 сентября 2018

Если ваш массив имеет размеры, скажем, A и B, в вашем первом фрагменте кода, переменная z работает с увеличением 1, а во втором - с увеличением A и получает 0-й элемент каждого.

Но поскольку z должен подсчитать общее количество элементов, оно, конечно, переполняется.

...