Force202Gamer
Newbie
- Registriert
- Jan. 2014
- Beiträge
- 7
Hallo liebe Community!
Ich schreibe gerade an einem Programm, welches mithilfe von einem dynamisch erstellten Feld eine Bücherliste verwalten soll. In der Funktion, wo ich das Feld erstelle, wird der Speicher dann vergrößert, wenn ich 80% des max. Speichers erreicht habe. Leider funktioniert das Vergrößern nicht und der Debugger gibt Meldungen, wie "ntdll!TpWaitForAlpcComletion()" oder "ntdll!RtLargeIntegerDivide()" aus. In Zeile 24 bleibt der Debugger hängen und gibt mir die Meldungen über "Call Stack" aus. Zum Programmieren benutze ich CodeBlocks.
Vom Compiler habe ich grünes Licht bekommen!
Was habe ich falsch gemacht?
P.S.: Falls ich vergessen haben sollte etwas zu erwähnen, weist mich bitte darauf hin! Bin noch ganz neu und weiß noch nicht zu 100% was alles an Informationen notwendig ist.
Ich schreibe gerade an einem Programm, welches mithilfe von einem dynamisch erstellten Feld eine Bücherliste verwalten soll. In der Funktion, wo ich das Feld erstelle, wird der Speicher dann vergrößert, wenn ich 80% des max. Speichers erreicht habe. Leider funktioniert das Vergrößern nicht und der Debugger gibt Meldungen, wie "ntdll!TpWaitForAlpcComletion()" oder "ntdll!RtLargeIntegerDivide()" aus. In Zeile 24 bleibt der Debugger hängen und gibt mir die Meldungen über "Call Stack" aus. Zum Programmieren benutze ich CodeBlocks.
Vom Compiler habe ich grünes Licht bekommen!
Was habe ich falsch gemacht?
Code:
buch_t *erstelleBuecherFeld(char *dateipfad, int *n, int *maximal)
{
FILE *datei = NULL;
char zeile[2000];
buch_t *dynFeld;
int max_help;
datei = fopen(dateipfad, "rt");
if(!datei) {
return NULL;
}
*n = 0;
*maximal = 10;
dynFeld = (buch_t *)malloc(*maximal * sizeof(buch_t));
if(!dynFeld) {
fclose(datei);
return NULL;
}
while(fgets(zeile, sizeof(zeile), datei)) {
*n += erstelleNeuesBuch(zeile, dynFeld + *n, *n);
max_help = *maximal * 0.8;
if(*n == max_help) {
*maximal += 10;
dynFeld = (buch_t *)realloc(dynFeld, *maximal * sizeof(buch_t));
printf("\n%d Speicherplatz wurde auf %d (%d Bytes) vergroessert!", *n, *maximal,
sizeof (buch_t) * *maximal);
if(!dynFeld) {
fclose(datei);
return NULL;
}
}
}
fclose(datei);
return dynFeld;
}
P.S.: Falls ich vergessen haben sollte etwas zu erwähnen, weist mich bitte darauf hin! Bin noch ganz neu und weiß noch nicht zu 100% was alles an Informationen notwendig ist.