У меня ошибка сегментации, когда я запускаю свою программу на C, и я ее не понимаю. Я читаю заголовок из двоичного файла, который содержит студенческие структуры.Что означает эта ошибка сегмента?
это вина сегментный я получаю, когда я запустить его с помощью GDB
Программа получила сигнал SIGSEGV, неисправность Сегментация. 0x0804850f в основной() в aidb.c: 49 49}
Я нахожусь под впечатлением, что ошибка сегментации находится на линии 49, однако есть только закрывающая скобка моего основного метода() в строке 49. Это мой код, только в случае, если это помогает прояснить вещи:
#include<stdio.h>
typedef struct {
char id_chars[4];
int file_size;
int section_table_offset;
int section_count;
} Header;
typedef struct {
int offset;
int num_entries;
int type; // legal value above
} SectionHeader;
int main(void) {
FILE *infile = fopen("file.bin", "r");
Header aidbheader;
//Reads the aidb file header
// fread(aidbheader, sizeof(Header),16, infile);
fread(&aidbheader.id_chars, sizeof(char),4, infile);
fread(&aidbheader.file_size, sizeof(int),1, infile);
fread(&aidbheader.section_table_offset, sizeof(int),1, infile);
fread(&aidbheader.section_count, sizeof(int),1, infile);
SectionHeader table[4];
fread(table, sizeof(SectionHeader), 48, infile);
printf("\nSectionHeader offset: %d \n", table[3].offset);
return 0;
} // this is line 49
'Int id_chars [4];' -> 'символьные id_chars [4];', 'fread (table, sizeof (SectionHeader), 48, infile);': '48' ->' 4' – BLUEPIXY
Проверьте, является ли ваша infile NULL. – ebby94
Сбои на закрывающей скобке функции (и вообще в операторах 'return') обычно связаны с переписанием адреса функции return, что часто вызвано выходом из границ локальных массивов. –