Я все еще плохо знаком с C, malloc и всем этим джазом, поэтому я решил написать это, чтобы выучить некоторые навыки. Идея в том, что я читаю кучу целых из файла и помещаю их в матрицу (2d массив). В начале файла указывается количество строк и столбцов, поэтому он считывает эти числа и использует malloc для настройки массива 2d.
int read_matrix(FILE *mat, int ***Z, int *x, int *y)
{
int i = 0;
int x_temp = 0;
int y_temp = 0;
if (fscanf(mat, "%d %d", &(*x), &(*y)) == EOF){
printf("File is not big enough to contain a matrix\n");
return -1;
}
printf("About to malloc %d\n", *x);
*Z = (int**) malloc(*x * sizeof(int*));
while (i < *x) {
printf("mallocing %d\n", i);
*Z[i] = (int*) malloc(*y * sizeof(int));
printf("malloced\n");
++i;
}
printf("Malloc complete\n");
/*Other unimportant code*/
}
Вывод гласит:
About to malloc 3
mallocing 0
malloced
mallocing 1
Segmentation fault
Так что это не неправильное выражение ничего, кроме одного int ** в Z .. Я думаю?
Я очень новичок в C, поэтому я не уверен, сделал ли я небольшую ошибку или действительно неправильно все понял. Какие-нибудь мысли? Спасибо!