Problem mit calloc

  • Hallo!
    Ich programmiere einen mp3-Player den man über ein kleines LCD Display mit 4 Buttons ansteuern kann. Hierzu verwende ich den Player imp3sh. Den imp3sh Player kann man über named pipes Steuerbefehle schicken um ihm zu sagen was er machen soll (PLAY, STOP, NEXT SONG, LOAD PLAYLIST, etc.).
    In meinem C-Programm habe ich eine handler-Funktion mit der ich auf Buttonevents reagieren kann.

    Gut das ist der Hintergrund des Programms. Jetzt mal zu meinem Problem.

    Ich habe eine Funktion geschrieben in der ich den Player initialisiere. Dort werden alle meine Playlist geladen.
    In initialize_player() allokiere ich mir Speicher mittels calloc() für zwei char Zeiger, die ich weiter unten wieder mit free() freigebe. Hier bekomme ich aber bei der Ausführung einen Segmentaion fault (siehe rotes Kommentar)
    Mir ist nicht klar warum?

    Der Code der Funktion sieht so aus:



    Um Steuerbefehle über die named pipes zu schicken habe ich eine weitere Funktion names write_imp3in() geschrieben, die sieht so aus:
    Die Steuerbefehle müssen immer mit \n abschließen




    Kann mir jemand weiterhelfen?

    xxfunkxx

  • Ich ab meinen Fehler gefunden. Die dynamischen Arrays waren einfach zu klein angelegt. Das hab ioch jezu so angepaßt, dass ich auf jedenfall die doppelte Größe habe und außerdem hab ich die Fehlerabfrage gleich nach der Speicherzuweisung eingebaut.

    Code
    addlist = (char *) calloc (2, strlen(my_string) + sizeof("addlist ") + 2); 
     if(addlist == NULL) {
        printf("\t---> Not enough RAM for pointer addlist!\n");
        exit(1);
     }

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!