free(): invalid next size (fast)

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
TRex
Moderator
Beiträge: 8343
Registriert: 23.11.2006 12:23:54
Wohnort: KA

free(): invalid next size (fast)

Beitrag von TRex » 08.12.2007 02:53:08

Kann jemand was damit anfangen?

Ich hab folgendes Konstrukt:

Code: Alles auswählen

while (list->size > 0)
{
tu was...
leg nen pointer auf ein neues objekt an
tu noch was....
}
Und am Ende erhalt ich das da (nach dem ersten Durchlauf):

Code: Alles auswählen

tmp = 0x82a0858
*** glibc detected *** /home/user/Desktop/Uebung2/grs: free(): invalid next size (fast): 0x082a0850 ***
tmp ist der Pointer, der angelegt wird. Da ich die Funktion nicht verlasse, sollte der auch nicht gelöscht werden. Selbst wenn aber doch, wäre mir das egal - er war nur temporär.

Jetzt ists aber so, dass der nach dem Erreichen der letzten Anweisung die Schleife verlässt (die Abbruchbedingung ist noch nicht erreicht) und sich mit diesem Fehler verabschiedet. Er geht auch nicht nochmal die Schleife durch - die erste Anweisung (eine Ausgabe) wird nicht mehr ausgeführt. Den Speicherbereich, der freigegeben werden soll, konnte ich noch keinem Objekt/Zeiger/wasauchimmer zuordnen. Die Fehlermeldung gibts im Google-Netz auch hauptsächlich nur bei Bugmeldungen....

Kann mir bitte jemand helfen...Abgabedatum rückt so schnell näher...
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: free(): invalid next size (fast)

Beitrag von gms » 08.12.2007 10:26:12

TRex2003 hat geschrieben:Kann mir bitte jemand helfen...Abgabedatum rückt so schnell näher...
gerne, abe poste bitte den Auszug vom original Sourcecode ( wenn es länger wird auf http://nopaste.debianforum.de/ )

Gruß
gms

Benutzeravatar
TRex
Moderator
Beiträge: 8343
Registriert: 23.11.2006 12:23:54
Wohnort: KA

Beitrag von TRex » 08.12.2007 10:48:28

Hat sich erledigt, um 4 Uhr hatte ich den Fehler gefunden:

ich hatte folgendes in ner for-Schleife:

Code: Alles auswählen

for (int i=0; i<list.size()+1: i+=2)
...
sollte eigentlich -1 sein :oops: darf nicht mehr so spät programmieren...das deckt sich übrigens auch mit den dürftigen Angaben im Netz: die meisten (naja, 2 von 3) sagten was von Arrayüberschreitungen.
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

Antworten