Verwirrender Absturz bei malloc
-
Hi,
ich habe einen sehr verwirrenden Fehler in meinem Programm, im Debugger (von Eclipse) läuft es einwandfrei durch, wenn ich aber die Exe starte stürzt es ab.
An dieser Stelle passiert der Absturz:... printf("YY\n"); struct c_node *c_node=(struct c_node *)malloc(sizeof(struct c_node)); //<-- printf("EH\n"); ...
Konsolenausgabe:
003D24D0 23 pos 0 id g YY EH YY EH 003D2530 2 pos 0 id g YY
Wie man sieht läuft das Programm schon 2x an dieser Stelle durch erst beim 3. mal stürzt es ab.
Aber irgendwie komm ich hier nicht weiter.
Hat jemand eine Idee woran es liegen könnte?
Gruß HiFish
-
Du schreibst wahrscheinlich irgendwo über den Speicherbereich, den du mit malloc alloziert hast, hinaus. Dadurch werden die Steuerinformationen, die malloc braucht, um einen neuen freien Speicherblock zu finden, zerstört, und es kommt zum Absturz.
-
Ich werds mal daraufhin überprüfen aber müßte das "EH" dann nicht zumindest noch ausgegeben werden?
EDIT: Also ich find in der Funktion nixs was den alloziierten Speicher verlassen würde, und im Debugger step-by-step läufts ja auch anstandslos durch nur die exe macht zickenEDIT2: Habs jetzt gelöst der Fehler lag ganz woanders.
-
Dadurch werden die Steuerinformationen, die malloc braucht, um einen neuen freien Speicherblock zu finden, zerstört
Stehen die nicht am Anfang eines Blockes?
-
Ja, aber danach kommt der nächste Block
-
(es gibt keinen kopfhammer-smiley)
-
unix-flamer schrieb:
Dadurch werden die Steuerinformationen, die malloc braucht, um einen neuen freien Speicherblock zu finden, zerstört
Stehen die nicht am Anfang eines Blockes?
das muss nicht so sein. die könnten auch dahinter stehen. egal wo, bei einem *char p = malloc(100); darfst du nur die elemente p[0]...p[99] beschreiben. alles andere schrottet den heap.