Bei Verlassen der Funktion Absturz
-
Also ich bin mir nicht sicher, ob dieses Codefragment verständlich ist.
/* **************************************************** * Ändern eines Datensatzes * ****** */ int cDBSet::alt (vec_str criteria, vec_str dat) { db_ptr ptr; int crit, found; int out = 0; for (ptr = subset_leftborder; ptr != subset_rightborder; ptr++) { /* für jeden Eintrag im Datensubset */ found = 1; for (crit = 0; crit < criteria.size(); crit++) { /* für jeden Eintrag in den criteria */ /* vergleichen */ if (!cmp(criteria[crit], (*ptr)[crit])) found = 0; } /* wenn alle Kriterien erfüllt, Datensatz ändern */ if (found) { out++; (*ptr).clear(); (*ptr) = dat; } } return out; }Beim Verlassen dieser Methode schmiert laut dem Debugger des DevCpp mein Programm ab.
Die Klasse verwaltet Datensätze (vector<string>) in einer list<vector<string>>. Die hier gezeigte Methode soll einen Eintrag suchen (anhand des Parameters criteria) und durch einen neuen ersetzen (Parameter dat).
Beide sind vector<string> und beide haben genau 6 Elemente. Meine Subsets dienen zum Eingrenzen der zu durchsuchenden Daten.Die Funktion cmp sieht wie folgt aus:
int cDBSet::cmp (string a, string b) { if (a == TOK_EMPTY) { return true; } else { return (a == b); } }TOK_EMPTY ist ein Token das angibt, ob der aktuelle String beachtet werden soll.
Die cmp-Funktion wird auch anderswo genutzt und funktioniert.Aber kann mir wer erklären, wo ich nun mein Speicherleck habe?
-
Warum schreibst du nicht vernünftigen Code?
-
Warum kritisiert du nicht konstruktiv?
-
unmöglich. an dem code ist wirklich alles schlecht.
-
looool schrieb:
unmöglich. an dem code ist wirklich alles schlecht.
ich wuerd gern mal einen code von dir sehen.. wennst so groß redest
@DocJunior: kann den fehler auch nicht sehen aber was mir aufgefallen ist, warum gibt deine cmp Funktion eigentlich keinen bool zurueck?
-
*fg* weil ich ein alter C-ler bin und C kennt an sich kein Boolean. Ist irgendwie noch drin bei mir.
Aaaber das sollte eigentlich auch nicht das Problem sein.
@loool nur, weil du nicht fähig bist, diese 8 Zeilen Code zu verstehen heißt das noch lange nicht, daß dieser schlecht ist- ich würde da eher auf mangelndes Verständnis deinerseits tippen..
-
_das_ ist der grund warum c lernen vor c++ ganz böse ist.