invalid write of size 4
-
Hallo liebe Community,
ich habe schon im Forum geschaut ob es das Thema schon gab,
bin aber leider nicht fündig geworden.Beim Testen meines Programms mit valgrind kommen
derartige Fehler und ich habe heute schon mit einem
Kumpel ziemlich lange geschaut, was das sein kann, aber
wir kommen einfach nicht drauf.Wir bekommen diesen Fehler ziemlich oft,
und wenn ich dann im Programm schaue,
kommt das zum Beispiel bei einer solchen Zeile:name = strtok(array_of_friends, ";");
<-- Zeile 796.
Und das ist dann der Fehler, den valgrind rausschreibt.
Hat da wer Erfahrung damit? Oder kann mir jemand vielleicht
einen Tipp geben, woran das liegen könnte?==30094== Warning: client switching stacks? SP change: 0xbecda2a0 --> 0xbea84cf0
==30094== to suppress, use: --max-stackframe=2446768 or greater
==30094== Invalid write of size 4
==30094== at 0x804A1BD: sortNamesListDegree (assa.c:796)
==30094== by 0x804AEA7: listDegree (assa.c:1024)
==30094== by 0x8048E2A: runCommands (assa.c:419)
==30094== by 0x8048D9E: runProgramm (assa.c:389)
==30094== by 0x8048C52: splitText (assa.c:326)
==30094== by 0x80488B2: OpenFile (assa.c:195)
==30094== by 0x804B2B1: main (assa.c:1240)
==30094== Address 0xbea84cf4 is on thread 1's stackIch sag schon mal vielen Dank für die Mühen.
Lg Martin
-
Du schreibst in irgendwas, wo du nicht hinschreiben darfst. Was soll man dazu mehr sagen? valgrind wird Recht haben.
Der Fehler mag zwar beim strtok auftreten, aber höchstwahrscheinlich liegt die Ursache ganz woanders. Vermutlich bei fehlerhafter manueller Speicherverwaltung.
-
SeppJ schrieb:
Der Fehler mag zwar beim strtok auftreten, aber höchstwahrscheinlich liegt die Ursache ganz woanders. Vermutlich bei fehlerhafter manueller Speicherverwaltung.
Oder auch fehlende manuelle Speicherverwaltung.
Z.B. durch zu große variable length arrays. (wg.client switching stacks? SP change: 0xbecda2a0 --> 0xbea84cf0
).
-
Danke für die schnelle Antwort.
Kann ich irgendwie eingrenzen wo der tatsächliche Fehler liegen könnte.
Bei 1200 Zeilen Code ist das nämlich sonst echt ziemlich blöd.lg Martin
-
Als erstes schaute ich doch in
sortNamesListDegree()
und beteiligte Variablen.Benutzt Du
malloc/free
, bzw. große Arrays?
-
@Furble Wurble Der Tipp war goldrichtig. Vielen Dank. Hatte ein * anstatt einem + geschrieben.
lg martin