Segmentation fault error bei codestück
-
Tagchen, ich bin auf folgendes problem gestoßen:
void MusicLib::searchingFor(string* what, string* searchStr) { int iter = 0; //iterator string s; //tmp for(iter; iter < lib.size(); iter++){ s = lib[iter]->getWhat(what); if(s == *searchStr){ cout << "track found....!" << endl; cout << lib[iter]->toString(); } else searchForSubStr(); } }obiger code hat schon funktioniert.... aber auf einmal bekam ich einen Compilerfehler.... beim durchdebuggen kam ich drauf dass der error beim obigen codestück auftritt.... lib ist ein vector...
compiler: 8[sig]....2656 _cygtls::handle_exceptions: Error while dumping state (probably corrupted stack)
Segmentation fault (core dumped)ich weiß net wos probleme gibt.. vor allem weil der code schon gelaufen is.....

-
Erstell am besten das Projekt nochmal neu und lösch alle Dateien, die generiert werden. So Zeugs hatte ich auch schon ein paar mal. Kann vorkommen. Wenn das nicht hilft neues Projekt aufmachen und wenn das auch nicht hilft Compiler/IDE neu installieren.
-
cryps schrieb:
string* what, string* searchStrs = lib[iter]->getWhat(what);warum macht man denn sowas? wie wärs mit referenzen? und const?
-
hm hab gcc neu installiert.... noch immer das gleiche

-
Das ganze ist aber nicht irgendwie rekursiv, oder?
-
Dein Heap scheint kaputt zu sein. Das kann allerdings überall passiert sein, und nicht nur da wo es crasht.
Überprüfe am besten mal per Valgrind ob du nirgendswo auf undefinierten Speicher zugreifst etc.
-
The-Kenny schrieb:
Dein Heap scheint kaputt zu sein. Das kann allerdings überall passiert sein, und nicht nur da wo es crasht.
Überprüfe am besten mal per Valgrind ob du nirgendswo auf undefinierten Speicher zugreifst etc.
Error while dumping state (probably corrupted stack)
Während dem Compilen hat der Heap sehr wenig zu melden..
-
Tagchen,
Ich glaube ich habe den Fehler gefunden (zumindest fuktioniert jetzt alles wieder) .... es ging um folgende methode
string MusicTrack::getWhat(string& what){ if(what == "title") return this->title; else return ""; //<--- else zweig fehlte... }ich hatte hier keine else-zweig... in java führt das auch zu problemen weil die methode nicht in jedem fall etwas zurückgeben würde....
-
cryps schrieb:
ich hatte hier keine else-zweig... in java führt das auch zu problemen weil die methode nicht in jedem fall etwas zurückgeben würde....
Dann stell bitte deinen Compiler so ein, das er solche Fehler ausgibt (Je nach Compiler sind es Warnstufen, ich glaube beim gcc gibt es -wall [oder so ähnlich]). Rein vom C++ Standard her gibt es hier einen Fehler (Auch wenn beispielsweise der C++ Builder dies nur als "Warnung" ansieht).
cu André
-
asc schrieb:
Rein vom C++ Standard her gibt es hier einen Fehler (Auch wenn beispielsweise der C++ Builder dies nur als "Warnung" ansieht).
cu André
Selbst VC bringt da lediglich eine Warnung.. Zumindest sobald man ein if reinmacht..