PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : segfault am ende des programms



soul_rebel
31-03-2005, 19:30
ich habe ein etwas merkwürdiges problem... mein programm macht unter bestimmten umständen beim schließen ein segmentation fault. das programm wäre etwas lang hier zu posten, also meine grundfrage: woran kann es liegen wenn das programm nachdem es alles richtig ausgeführt hat, beim schließen einen fehler verursacht? ich dachte mir es könnte beim freigeben der speicherbereiche ein problem geben und habe im destructor der klasse extra alle character arrays mit free() 'entladen', aber es hilft nichts...

peschmae
31-03-2005, 20:56
Eventuell gibts du was zuviel frei? D.h. was das schon freigegeben wurde?
Aber das ist wirklich stochern im Nebel...

Setz mal etwas Debugwerkzeuge drauf an (wenns sein muss auch strace ;))

MfG Peschmä

ContainerDriver
31-03-2005, 22:05
Setz mal etwas Debugwerkzeuge drauf an (wenns sein muss auch strace ;))

Ich würde dir dazu valgrind empfehlen. Damit lässt sich meist recht schnell die Ursache für Speicherzugriffsfehler finden.

Gruß, Florian

RHBaum
01-04-2005, 13:05
habe im destructor der klasse
Das klingt nach c++


free()
Das klingt aber nach C ?

Sollte man nicht tun !

Wenn c++ benutzt solltest auch deine Arrays mit new und delete anlegen ...

also

char * myArray = new char [256];

delete[] myArray;

Ich hoffe nur du vermischst malloc/free und new/delete nich miteinander ....


Aber ohne Code kann ma eh ned viel sagen ...

Ciao ...

soul_rebel
01-04-2005, 16:09
danke für die antworten als erstes. also ich habe meine strings natürlich mit new gemacht und free() zu benutzen ist natürlich falsch, aber auch mit delete bringts nichts weil sie schon free sind. das ist also nicht das problem...
strace und valgrind gehen beide nciht, da sie das proc dateisystem benutzen welches mein freebsd system nicht tut, weiß jemand eine alternative?

Lin728
01-04-2005, 16:24
Hmm...



natürlich falsch, aber auch mit delete bringts nichts weil sie schon free sind. das ist also nicht das problem...


frees't du 2x den selben Speicherbereich?

soul_rebel
01-04-2005, 18:54
nein hab ich nicht....
zur erklärung: ich dachte der speicherbereich würde vielleicht nicht freigegeben werden und habe deswegen versucht in manuell zu free'en/deleten; aber ich habe gemerkt das es daran nciht liegt...
hab inzwischen den fehler gefunden....
sorry soviel unverständliches zeug geschrieben zu haben ;)

peschmae
01-04-2005, 19:10
Dann schreib doch mal was verständliches ;)

Was war falsch? Das auf jeden Fall (und das kann auch gerne segfaulten deswegen) aber das tönte etwas so als ob da noch mehr falsch gewesen wäre?

MfG Peschmä