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