c-从文件读取时出现混淆的分段错误



因此,我试图将一个整数文件读取为两个单独的矩阵。第一个矩阵读取得非常好。然后第二个尝试从文件中读取,到达最后一行并到达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");
}

num_processes * sizeof(int)的大小错误,因为使用了错误的类型。

与其尝试将正确的类型与指针一起使用,不如根据取消引用的指针来确定大小。更易于正确编码、审查和维护。

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

相关内容

  • 没有找到相关文章

最新更新