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.


Anmelden zum Antworten