Непонятная ошибка сегментации при чтении из файла - PullRequest
0 голосов
/ 13 ноября 2018

Итак, я пытаюсь прочитать файл целых чисел в 2 отдельные матрицы.Первая матрица читается в полном порядке.Затем второй пытается прочитать из файла, попадает на последнюю строку и попадает в segfault.Я просмотрел код около миллиарда раз и не могу понять, почему я получаю этот segfault.Любая помощь будет полезна!

Соответствующий код вставлен ниже:

int** allocation_matrix;
int** request_matrix;

allocation_matrix = (int **) malloc(num_processes * sizeof(int));
request_matrix    = (int **) malloc(num_processes * sizeof(int));

for (i = 0; i < num_processes; i++)
{
    allocation_matrix[i] = (int *) malloc(num_resources * sizeof(int));
    request_matrix[i]    = (int *) malloc(num_resources * sizeof(int));
}

for (i = 0; i < num_processes; i++)
{
    for (j = 0; j < num_resources; j++)
    {
        fscanf(fp, "%d", &allocation_matrix[i][j]);
    }
}

for (i = 0; i < num_processes; i++)
{
    for (j = 0; j < num_resources; j++)
    {
        fscanf(fp, "%d", &request_matrix[i][j]);
        printf("%d ", request_matrix[i][j]);
    }
    printf("\n");
}

1 Ответ

0 голосов
/ 13 ноября 2018

num_processes * sizeof(int) - неправильный размер, так как использовался неправильный тип.

Вместо того, чтобы пытаться использовать правильный тип с указателем, определите размер, основываясь на указателе без ссылки.Проще кодировать правильно, просматривать и поддерживать.

// allocation_matrix = (int **) malloc(num_processes * sizeof(int));
allocation_matrix = malloc(sizoef *allocation_matrix * num_processes);
...