从文件读取时令人困惑的分段错误

时间:2018-11-13 02:37:52

标签: c file segmentation-fault

因此,我正在尝试将整数文件读入2个单独的矩阵中。第一个矩阵读取得很好。然后,第二个尝试读取文件,进入最后一行并出现段错误。我查看了大约成千上万次的代码,不知道为什么会出现此段错误。任何帮助都会有所帮助!

相关代码粘贴如下:

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 :(得分:0)

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

不要尝试对指针使用正确的类型,而应根据取消引用的指针来确定大小。更容易编写正确的代码,进行审查和维护。

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