<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Bei Verlassen der Funktion Absturz]]></title><description><![CDATA[<p>Also ich bin mir nicht sicher, ob dieses Codefragment verständlich ist.</p>
<pre><code class="language-cpp">/* ****************************************************
 * Ä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 &lt; 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;
}
</code></pre>
<p>Beim Verlassen dieser Methode schmiert laut dem Debugger des DevCpp mein Programm ab.<br />
Die Klasse verwaltet Datensätze (vector&lt;string&gt;) in einer list&lt;vector&lt;string&gt;&gt;. Die hier gezeigte Methode soll einen Eintrag suchen (anhand des Parameters criteria) und durch einen neuen ersetzen (Parameter dat).<br />
Beide sind vector&lt;string&gt; und beide haben genau 6 Elemente. Meine Subsets dienen zum Eingrenzen der zu durchsuchenden Daten.</p>
<p>Die Funktion cmp sieht wie folgt aus:</p>
<pre><code class="language-cpp">int     cDBSet::cmp     (string a, string b)
{
    if (a == TOK_EMPTY)
    {
        return true;
    }
    else
    {
        return (a == b);
    }
}
</code></pre>
<p>TOK_EMPTY ist ein Token das angibt, ob der aktuelle String beachtet werden soll.<br />
Die cmp-Funktion wird auch anderswo genutzt und funktioniert.</p>
<p>Aber kann mir wer erklären, wo ich nun mein Speicherleck habe?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/126116/bei-verlassen-der-funktion-absturz</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 13:47:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/126116.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 11 Nov 2005 19:53:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Bei Verlassen der Funktion Absturz on Fri, 11 Nov 2005 19:53:51 GMT]]></title><description><![CDATA[<p>Also ich bin mir nicht sicher, ob dieses Codefragment verständlich ist.</p>
<pre><code class="language-cpp">/* ****************************************************
 * Ä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 &lt; 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;
}
</code></pre>
<p>Beim Verlassen dieser Methode schmiert laut dem Debugger des DevCpp mein Programm ab.<br />
Die Klasse verwaltet Datensätze (vector&lt;string&gt;) in einer list&lt;vector&lt;string&gt;&gt;. Die hier gezeigte Methode soll einen Eintrag suchen (anhand des Parameters criteria) und durch einen neuen ersetzen (Parameter dat).<br />
Beide sind vector&lt;string&gt; und beide haben genau 6 Elemente. Meine Subsets dienen zum Eingrenzen der zu durchsuchenden Daten.</p>
<p>Die Funktion cmp sieht wie folgt aus:</p>
<pre><code class="language-cpp">int     cDBSet::cmp     (string a, string b)
{
    if (a == TOK_EMPTY)
    {
        return true;
    }
    else
    {
        return (a == b);
    }
}
</code></pre>
<p>TOK_EMPTY ist ein Token das angibt, ob der aktuelle String beachtet werden soll.<br />
Die cmp-Funktion wird auch anderswo genutzt und funktioniert.</p>
<p>Aber kann mir wer erklären, wo ich nun mein Speicherleck habe?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/915479</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/915479</guid><dc:creator><![CDATA[DocJunioR]]></dc:creator><pubDate>Fri, 11 Nov 2005 19:53:51 GMT</pubDate></item><item><title><![CDATA[Reply to Bei Verlassen der Funktion Absturz on Fri, 11 Nov 2005 20:03:43 GMT]]></title><description><![CDATA[<p>Warum schreibst du nicht vernünftigen Code?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/915487</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/915487</guid><dc:creator><![CDATA[looool]]></dc:creator><pubDate>Fri, 11 Nov 2005 20:03:43 GMT</pubDate></item><item><title><![CDATA[Reply to Bei Verlassen der Funktion Absturz on Fri, 11 Nov 2005 20:07:38 GMT]]></title><description><![CDATA[<p>Warum kritisiert du nicht konstruktiv?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/915493</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/915493</guid><dc:creator><![CDATA[Panke]]></dc:creator><pubDate>Fri, 11 Nov 2005 20:07:38 GMT</pubDate></item><item><title><![CDATA[Reply to Bei Verlassen der Funktion Absturz on Fri, 11 Nov 2005 20:08:40 GMT]]></title><description><![CDATA[<p>unmöglich. an dem code ist wirklich alles schlecht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/915495</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/915495</guid><dc:creator><![CDATA[looool]]></dc:creator><pubDate>Fri, 11 Nov 2005 20:08:40 GMT</pubDate></item><item><title><![CDATA[Reply to Bei Verlassen der Funktion Absturz on Fri, 11 Nov 2005 20:10:52 GMT]]></title><description><![CDATA[<p>looool schrieb:</p>
<blockquote>
<p>unmöglich. an dem code ist wirklich alles schlecht.</p>
</blockquote>
<p>ich wuerd gern mal einen code von dir sehen.. wennst so groß redest</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/215">@DocJunior</a>: kann den fehler auch nicht sehen aber was mir aufgefallen ist, warum gibt deine cmp Funktion eigentlich keinen bool zurueck?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/915496</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/915496</guid><dc:creator><![CDATA[leo aka qsch]]></dc:creator><pubDate>Fri, 11 Nov 2005 20:10:52 GMT</pubDate></item><item><title><![CDATA[Reply to Bei Verlassen der Funktion Absturz on Sat, 12 Nov 2005 07:35:54 GMT]]></title><description><![CDATA[<p>*fg* weil ich ein alter C-ler bin und C kennt an sich kein Boolean. Ist irgendwie noch drin bei mir.</p>
<p>Aaaber das sollte eigentlich auch nicht das Problem sein.<br />
@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..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/915662</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/915662</guid><dc:creator><![CDATA[DocJunioR]]></dc:creator><pubDate>Sat, 12 Nov 2005 07:35:54 GMT</pubDate></item><item><title><![CDATA[Reply to Bei Verlassen der Funktion Absturz on Sat, 12 Nov 2005 09:24:35 GMT]]></title><description><![CDATA[<p>_das_ ist der grund warum c lernen vor c++ ganz böse ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/915698</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/915698</guid><dc:creator><![CDATA[volkart]]></dc:creator><pubDate>Sat, 12 Nov 2005 09:24:35 GMT</pubDate></item></channel></rss>