??malloc == AccessViolation??
-
Hi all,
das ich nochmal mit einer einfach verketteten Liste ein Problem bekommen würde, hätte ich nicht gedacht...printf( "!" ); while( NULL == ( aktData->next = malloc( sizeof(TAGDATA) + 10 ) ) ) { printf( "." ); Sleep( 25 ); } printf( "?" );
So sieht das aus, und genau beim 7ten reservieren(läuft in einer while schleife) gibts ne access violation!?
typedef struct _TAGDATA{ char *path; char *tags; struct _TAGDATA *next; }TAGDATA; int main() { TAGDATA *firstData, *aktData; firstData = malloc( sizeof(TAGDATA) + 10 ); firstData->path = NULL; firstData->tags = NULL; firstData->next = NULL; while( !feof(readFile) ) //einlesen der "alten" Datei { //pfad einlesen fgets( row, sizeof(row), readFile ); aktData->path = malloc( strlen(row)*sizeof(char) ); strcpy( aktData->path, row ); //tags einlesen fgets( row, sizeof(row), readFile ); aktData->tags = malloc( strlen(row)*sizeof(char) ); strcpy( aktData->tags, row ); printf( "!" ); while( NULL == ( aktData->next = malloc( sizeof(TAGDATA) + 10 ) ) ) { printf( "." ); Sleep( 25 ); } printf( "?\n" ); aktData = aktData->next; //in nächsten datensatz gehen aktData->path = NULL; aktData->tags = NULL; aktData->next = NULL; } }
Die Ausgabe ist lediglich
!? !? !? !? !? !
Was übersehe ich?
Ich suche schon seid 1 Stunde... Wer was findet währe nett mir nen tipp zu geben .MFG und danke im voraus
-
Du initialisierst aktData nicht. Außerdem reservierst du ein char zuwenig für die Strings. Du brauchst strlen() + 1, für die Terminierung.
-
Na geill..
Danke auf jeden jetzt klappts.. Doch aktData wird auf firstData gesetzt, habe ich vergessen euch hier reinzustellen. an dem '+1' lags..
Ja ist ja auch logisch Danke dir