Ich habe eine Segmentierung Fehler, wenn ich mein C-Programm ausführen, und ich verstehe es nicht. Ich lese den Header aus einer Binärdatei, die Student-Strukturen enthält.Was bedeutet dieser seg Fehler bedeutet
dies ist der seg Fehler, den ich bekommen, wenn ich es mit gdb laufen
Programmsignal SIGSEGV empfangen, Fehlersegmentierung. 0x0804850f in main() bei aidb.c: 49 49}
ich unter dem Eindruck bin, dass die Segmentierungsfehler in Zeile 49, sind jedoch nur die Schließbügel meiner Methode main() in Zeile 49. Das ist mein Code, nur für den Fall hilft es, Dinge zu klären:
#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];' -> 'char id_chars [4];', 'fread (Tabelle, sizeof (SectionHeader), 48, Infile);': '48' ->' 4' – BLUEPIXY
Überprüfen Sie, ob Ihre Eingabe NULL ist. – ebby94
Abstürze auf die schließende Klammer einer Funktion (und im Allgemeinen auf 'return'-Anweisungen) sind normalerweise auf das Überschreiben der Funktionsrückgabeadresse zurückzuführen, was oft dadurch verursacht wird, dass die Grenzen lokaler Arrays überschritten werden. –