free Problem
-
Hallo,
ich verzweifle grad über einem Codestück, das aufgebaut ist wie dieser:char *input; do { input = read_string (); //read_string ist eine Funktion zum Einlesen eines Strings von stdin if(strcmp(input, "text1") == 0) { do(Anweisung1); //free(input; --> liefert Fehler } if(strcmp(input, "text2") == 0) { do(Anweisung2); //free(input; --> liefert Fehler } } while(strcmp(input, "text3") == 0); if (strcmp(input, "text3") == 0) { free(input); }
Dieser Code liefert erwartungsgemäß Speicherlöcher. Mir ist es allerdings jetzt völlig unklar, wo ich die free(input) Statements setzten muss, wenn input != text3.
Ich habs versucht jeweils nach den dos zu setzten, jedoch liefert Valgrind dann Off-by-one errors. Wo also sinnvollerweise setzten, dass input nach jedem Schleifendurchlauf gefreed wird?
-
erledigt. :xmas1: