У меня есть следующий код:вина Сегментация по вызову функции с двухмерного массива
#define MAXSAMPLES 1024
typedef int sample_t;
typedef sample_t sub_band_t[MAXSAMPLES][MAXSAMPLES];
void blah(sample_t a[][MAXSAMPLES], int u0, int v0, int u1, int v1) {
. . . .
}
int main(int argc, char *argv[]) {
sub_band_t in_data;
int k =0;
if (argc < 2) {
printf("\nInput filename required\n");
return 0;
}
FILE *input_file = fopen(argv[1], "r");
char del = '\0';
int i = 0, j = 0;
int cols = 0;
sample_t x;
while (! feof(input_file)) {
if (fscanf(input_file, "%d%c", &x, &del) != 2) {
i--;
break;
}
in_data[i][j] = x;
if (del == '\n') {
i++;
j =0;
continue;
}
j++;
cols = j > cols ? j : cols;
x = 0;
}
blah(in_data, 0, 0, i, cols);
}
Когда я запускаю эту программу с входным файлом с 10 * 10 целых чисел, я получаю ошибку сегментации при вызове blah
функции в основном. Я не в состоянии подобрать какую-либо информацию о неисправности сегментации с помощью GDB также, он просто говорит:
0x0000000000400928 in blah (a=Cannot access memory at address 0x7ffffdbfe198) at blah.c
Что я здесь делаю неправильно? Любая помощь будет высоко оценен.
, если причина сбоя связана с функцией blah, поэтому почему вы не поместили ее код? – MOHAMED
Какая строка в 'blah' вызывает крах? Что ты делаешь там? Вы меняете 'a', чтобы указать на что-то еще? –
Авария происходит до инициализации функции, прямо на линии прототипа. Раньше функция была в порядке, но я поменял ее, чтобы взять двухмерный массив в качестве аргумента вместо двойного указателя. Я предполагаю, что проблема только в этом, но не может быть точным. – Dronacharya