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:


Anmelden zum Antworten