Ich versuche, Speicher zu reservieren, indem ich malloc zu meinem int-Zeiger verwende. Ich bekomme einen Segmentierungsfehler und wenn ich versuche, es mit gdb zu debuggen, bekomme ich diese Ausgabe:Segmentierungsfehler für einfache Speicherzuweisung
Programm empfangenes Signal SIGSEGV, Segmentierungsfehler. 0x00007ffff7a97f90 in __GI___libc_realloc (oldmem = 0x7fffffffdfd0, Bytes = 1) bei malloc.c: 3015 3015 malloc.c: Keine solche Datei oder Verzeichnis.
-Code ist wie folgt:
int stringAllocation(char **destination){
char c=1, *temp;
int ctr=0;
int num_of_char=0;
while(c!='\n'){
c=getc(stdin);
num_of_char+=1;
temp=realloc(*destination, sizeof(char)*num_of_char);
if(temp)
*destination=temp;
else{
printf("String allocation failure.");
return -1;
}
*(*destination+ctr)=c;
ctr++;
}
if((*destination)[ctr-1]=='\n')
(*destination)[ctr-1]='\0';
}
main(void){
char *temp_course;
int temp_sem;
int temp_acad_year;
int valid=0;
char dummy;
int ctr;
while(valid==0){
dummy=0;
while(dummy!='\n')
dummy=getc(stdin);
printf("\nGetting course!\n");
printf("\nCourse code: ");
stringAllocation(&temp_course);
printf("Semester: ");
scanf("%d", &temp_sem);
if(temp_sem<1||temp_sem>3){
valid=0;
continue;
}
else
valid=1;
printf("Academic year: ");
scanf("%d", &temp_acad_year);
if(temp_acad_year<1908||temp_acad_year>2015){
valid=0;
continue;
}
else
valid=1
}
int numstud;
int *studnum;
valid=0;
while(valid==0){
printf("Input number of students: ");
scanf("%d", &numstud);
if(numstud>=5&&numstud<=15)
valid=1;
}
studnum=(int*)calloc(numstud,sizeof(int));
}
}
"Sie wollen Code mit dem?" –
Danke, dass Sie uns wissen lassen. Jetzt sag bitte was du von uns willst? Sie haben keinen Code veröffentlicht, daher können Sie keine Hilfe erwarten. –
Es ist wie der Versuch, das Geheimnis von GOTT zu lösen, ohne Ihn zu sehen oder Ihm zu begegnen. :} – Haris