-
-
Hallo,
ich habe mir deine Funktion "strsplit" mal genauer angesehen. Das Ganze nicht dafür gedacht, dass jemand anderes die Funktion einfach mal so versteht. ;-)
Ein paar Fragen:
1.) "free (parameter);" zu Beginn von "strsplit" soll den vorher allocierten "token speicher wieder freigeben. Beim ersten Aufruf hat aber nie ein Malloc stattgefunden!
2) Du allocierst "str" und kopierst dort deinen Command-String rein. Den Speicherbereich gibst du aber nie wieder frei. Das ist dein MEM Leak...
Leider kannst du den Speicher auch nicht so einfach freigeben, da in diesem deine Token liegen, die du später in deiner case-Anweisung brauchst... Du müsstest irgendwann nach deiner case ein "free parameter[0]" machen... Aber das ist alles andere als geradeaus programmiert.
3.) in der Funktion "task_Command" fängst du zwar ab wenn cmd == NULL ist, aber du machst mit weiter als ob nichts wär. Dabei kann das eigentlich nur sein, wenn malloc die paar Byte die dein Programm zum arbeiten braucht nicht mehr bekommt. Du sollst an diesem Punkt die Arbeit einstellen, da auch andere Funktionen (z.b. Motorsteuerung) keinen Speicher mehr erhalten.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen