<?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[Problem mit Memorymanagement new und delete]]></title><description><![CDATA[<p>Hallo an alle!</p>
<p>Ich bin neu hier von daher bitte ich um Verzeihung falls ich gegen irgendwelche Förmlichkeiten verstoßen sollte ich werde mich bemühen.</p>
<p>Mich plagt gerade folgendes Problem:</p>
<blockquote>
<p>Erstellen Sie eine Klasse Liste, in der beliebig viele Integerwerte gespeichert werden können. Implementieren Sie die Methoden operator&lt;&lt; und operator&gt;&gt; so, dass Listen formartiert ausgegeben und eingelesen werden können. (Gewünschtes Format für die Darstellung einer Liste mit den drei Werten 1, 2 und 3 als Inhalt ist [1,2,3].) */</p>
</blockquote>
<p>Diese Aufgabe wurde mir gestellt, und ich begann sie umzusetzen sie ist noch nicht mit allem ausgestattet was sie braucht. Aber im momentanen Zustand erzeugt der Code einen Overflow obwohl ich den Garbage immer mit delete entferne.<br />
Ich hab jetzt echt jedes Tutorial durch und irgendwie hilft das alles nichts, wenn jemand eine Idee hat. Bitte Bitte her damit!</p>
<p>Vielen Dank und einen schönen Abend!</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;
class list
{
    public:
    int wert;
    int max;
    int *zahlen;
    int *zahlen2;
    list(int max=0,int wert=0)
    {
        this-&gt;max=max;
        this-&gt;wert=wert;
    }
    void input()
    {
        int input;
        cin &gt;&gt; input;
        cout &lt;&lt; endl;
        setWert(input);

    }
    void setWert(int value)
    {
        if(max==0)
        {
            zahlen = new int[max];
            zahlen[max] = value;
            cout &lt;&lt; zahlen[0];
            max++;
        }
        else
        {

            cout &lt;&lt; max &lt;&lt; &quot;MAX&quot; &lt;&lt; endl;
            zahlen2 = new int [max];
            zahlen[max] = value;
            cout &lt;&lt; &quot;[&quot;;
            for(int i=0; i&lt;=max; i++)
            {
                zahlen2[i]=zahlen[i];
                cout &lt;&lt;  zahlen2[i] &lt;&lt; &quot;,&quot;;

            }
            delete[] zahlen;
            cout &lt;&lt; &quot;]&quot;;
            max++;
            zahlen = new int[max];
            for(int i=0; i&lt;max; i++)
            {
                zahlen[i]=zahlen2[i];

        }

    }

};
int main()
{
list a;
int z=0;

do
{
a.input();

z++;
}while(z&lt;=8);
a.input();

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/317642/problem-mit-memorymanagement-new-und-delete</link><generator>RSS for Node</generator><lastBuildDate>Tue, 28 Jul 2026 14:21:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/317642.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 15 Jun 2013 19:00:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Memorymanagement new und delete on Sat, 15 Jun 2013 19:05:48 GMT]]></title><description><![CDATA[<p>Hallo an alle!</p>
<p>Ich bin neu hier von daher bitte ich um Verzeihung falls ich gegen irgendwelche Förmlichkeiten verstoßen sollte ich werde mich bemühen.</p>
<p>Mich plagt gerade folgendes Problem:</p>
<blockquote>
<p>Erstellen Sie eine Klasse Liste, in der beliebig viele Integerwerte gespeichert werden können. Implementieren Sie die Methoden operator&lt;&lt; und operator&gt;&gt; so, dass Listen formartiert ausgegeben und eingelesen werden können. (Gewünschtes Format für die Darstellung einer Liste mit den drei Werten 1, 2 und 3 als Inhalt ist [1,2,3].) */</p>
</blockquote>
<p>Diese Aufgabe wurde mir gestellt, und ich begann sie umzusetzen sie ist noch nicht mit allem ausgestattet was sie braucht. Aber im momentanen Zustand erzeugt der Code einen Overflow obwohl ich den Garbage immer mit delete entferne.<br />
Ich hab jetzt echt jedes Tutorial durch und irgendwie hilft das alles nichts, wenn jemand eine Idee hat. Bitte Bitte her damit!</p>
<p>Vielen Dank und einen schönen Abend!</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;
class list
{
    public:
    int wert;
    int max;
    int *zahlen;
    int *zahlen2;
    list(int max=0,int wert=0)
    {
        this-&gt;max=max;
        this-&gt;wert=wert;
    }
    void input()
    {
        int input;
        cin &gt;&gt; input;
        cout &lt;&lt; endl;
        setWert(input);

    }
    void setWert(int value)
    {
        if(max==0)
        {
            zahlen = new int[max];
            zahlen[max] = value;
            cout &lt;&lt; zahlen[0];
            max++;
        }
        else
        {

            cout &lt;&lt; max &lt;&lt; &quot;MAX&quot; &lt;&lt; endl;
            zahlen2 = new int [max];
            zahlen[max] = value;
            cout &lt;&lt; &quot;[&quot;;
            for(int i=0; i&lt;=max; i++)
            {
                zahlen2[i]=zahlen[i];
                cout &lt;&lt;  zahlen2[i] &lt;&lt; &quot;,&quot;;

            }
            delete[] zahlen;
            cout &lt;&lt; &quot;]&quot;;
            max++;
            zahlen = new int[max];
            for(int i=0; i&lt;max; i++)
            {
                zahlen[i]=zahlen2[i];

        }

    }

};
int main()
{
list a;
int z=0;

do
{
a.input();

z++;
}while(z&lt;=8);
a.input();

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2331400</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2331400</guid><dc:creator><![CDATA[Jannik]]></dc:creator><pubDate>Sat, 15 Jun 2013 19:05:48 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Memorymanagement new und delete on Sat, 15 Jun 2013 19:10:23 GMT]]></title><description><![CDATA[<p>Deine Implementierung hat mit einer Liste nichts zu tun. Du solltest noch einmal in deinem Script (oder womit du auch lernst) nachsehen, was eine Liste ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2331401</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2331401</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sat, 15 Jun 2013 19:10:23 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Memorymanagement new und delete on Sat, 15 Jun 2013 19:16:00 GMT]]></title><description><![CDATA[<p>Jannik schrieb:</p>
<blockquote>
<p>Diese Aufgabe wurde mir gestellt, und ich begann sie umzusetzen sie ist noch nicht mit allem ausgestattet was sie braucht. Aber im momentanen Zustand erzeugt der Code einen Overflow obwohl ich den Garbage immer mit delete entferne.</p>
</blockquote>
<p>Was meinst du mit Overflow?</p>
<p>Siehe Kommentare.</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;
class list
{
    public:
    int wert;
    int max;
    int *zahlen;
    int *zahlen2;  // wozu ist das ein Member?
    list(int max=0,int wert=0)
    {
        this-&gt;max=max;
        this-&gt;wert=wert;
    }
    void input()
    {
        int input;
        cin &gt;&gt; input;
        cout &lt;&lt; endl;
        setWert(input);

    }
    void setWert(int value)
    {
        if(max==0)
        {
            zahlen = new int[max];   // new int[0]: Null Elemente im Array
            zahlen[max] = value;     // zahlen[0] gibt es also nicht =&gt; Crash
            cout &lt;&lt; zahlen[0];
            max++;
        }
        else
        {

            cout &lt;&lt; max &lt;&lt; &quot;MAX&quot; &lt;&lt; endl;
            zahlen2 = new int [max]; // siehe oben, auch eins zu klein
            zahlen[max] = value;     // meintest du zahlen2[max]?
            cout &lt;&lt; &quot;[&quot;;
            for(int i=0; i&lt;=max; i++)
            {
                zahlen2[i]=zahlen[i];
                cout &lt;&lt;  zahlen2[i] &lt;&lt; &quot;,&quot;;

            }
            delete[] zahlen;
            cout &lt;&lt; &quot;]&quot;;
            max++;
            zahlen = new int[max];   // hier auch
            for(int i=0; i&lt;max; i++) // warum &lt; max? oben noch &lt;=
            {
                zahlen[i]=zahlen2[i];

        }

    }

};
int main()
{
list a;
int z=0;

do
{
a.input();

z++;
}while(z&lt;=8);
a.input();

}
</code></pre>
<p>Außerdem ist die ganze Kopiererei teilweise ziemlich überflüssig. Du könntest, nachdem du alles in zahlen2 reinkopiert und zahlen deletet hast einfach <code>zahlen = zahlen2;</code> sagen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2331403</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2331403</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Sat, 15 Jun 2013 19:16:00 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Memorymanagement new und delete on Sat, 15 Jun 2013 19:17:18 GMT]]></title><description><![CDATA[<p>Naja wir sollen ja auch eine Klasse mit dem Namen Liste erstellen, wie dem auch sei. Ich will wirklich wissen wieso mir hier der Speicher abschmiert. Dazu vielleicht noch eine Idee? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2331404</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2331404</guid><dc:creator><![CDATA[Jannik]]></dc:creator><pubDate>Sat, 15 Jun 2013 19:17:18 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Memorymanagement new und delete on Sat, 15 Jun 2013 19:18:11 GMT]]></title><description><![CDATA[<p>Unter Overflow versteh ich dass es so gerade möglich ist, je nach 32/64 bit Betriebssystem eine gewisse Anzahl an Werten zu speichern, bis dann &quot;core dumped&quot; erscheint</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2331405</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2331405</guid><dc:creator><![CDATA[Jannik]]></dc:creator><pubDate>Sat, 15 Jun 2013 19:18:11 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Memorymanagement new und delete on Sat, 15 Jun 2013 19:18:38 GMT]]></title><description><![CDATA[<p>Weil du exakt 0 Byte Speicher reservierst, aber in die 0 Byte was reinstecken willst. Und eine Liste implementiert man gewoehnlich durch Verkettung, nur so als Tipp...<br />
Ausserdem fehlt bei dir operator &lt;&lt;/&gt;&gt;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2331406</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2331406</guid><dc:creator><![CDATA[Jonas OSDever]]></dc:creator><pubDate>Sat, 15 Jun 2013 19:18:38 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Memorymanagement new und delete on Sat, 15 Jun 2013 19:20:24 GMT]]></title><description><![CDATA[<p>@ Bashar versteh ich das richtig. Das der Core Dump nichts mit den Delete operatoren (löschen die so alles vollständig?)<br />
sondern mit dieser Geschichte</p>
<pre><code>zahlen = new int[max];   // new int[0]: Null Elemente im Array 
            zahlen[max] = value;     // zahlen[0] gibt es also nicht =&gt; Crash 
            cout &lt;&lt; zahlen[0]; 
            max++;
</code></pre>
<p>zusammenhängen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2331407</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2331407</guid><dc:creator><![CDATA[Jannik]]></dc:creator><pubDate>Sat, 15 Jun 2013 19:20:24 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Memorymanagement new und delete on Sat, 15 Jun 2013 19:22:39 GMT]]></title><description><![CDATA[<p>Wenn du nix reserviert hast, schreibst du irgendwo hin. Das kann noch gut gehen (ist nur Undefined Behavior, theoretisch kann alles passieren). Nur irgendwann triffst du halt einen Speicherbereich, wo es dem Betriebssystem nicht mehr so gefaellt, dass du da einfach ohne zu fragen hin schreibst. Und dann krachts.<br />
Und wie gesagt: Das ist keine Liste.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2331408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2331408</guid><dc:creator><![CDATA[Jonas OSDever]]></dc:creator><pubDate>Sat, 15 Jun 2013 19:22:39 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Memorymanagement new und delete on Sat, 15 Jun 2013 19:23:13 GMT]]></title><description><![CDATA[<p>Jannik schrieb:</p>
<blockquote>
<p>Naja wir sollen ja auch eine Klasse mit dem Namen Liste erstellen</p>
</blockquote>
<p>Nach meiner Erfahrung soll eine Klasse mit Namen Liste auch eine Liste implementieren. Wie es in deinem Kurs aussieht, kann ich natürlich nicht beurteilen ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2331409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2331409</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sat, 15 Jun 2013 19:23:13 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Memorymanagement new und delete on Sat, 15 Jun 2013 19:24:42 GMT]]></title><description><![CDATA[<p>Anscheinend habe ich hier einen Fehler gemacht, leider seh ich ihn noch nicht um ehrlich zu sein.</p>
<pre><code>zahlen2 = new int [max]; // Hier wird ein neues Array erstellt mit &quot;max&quot; Anzahl an       Feldern
zahlen[max] = value;// Hier setze ich den Wert Value in den Array an der Stelle Max als der größtmöglichen
</code></pre>
<p>Das sind meine Gedanken dahinter, kann mir das wer erklären?</p>
<p>Vielen Dank für das Feedback!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2331411</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2331411</guid><dc:creator><![CDATA[Jannik]]></dc:creator><pubDate>Sat, 15 Jun 2013 19:24:42 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Memorymanagement new und delete on Sat, 15 Jun 2013 19:25:45 GMT]]></title><description><![CDATA[<p>Spielt das eine Rolle? Das ist ein eindeutiger Fehler, der oft gerne zu einem Programmabsturz führt. Ich würde sagen, dass die Hypothese, dass das hier auch der Fall ist, nicht ganz von der Hand zu weisen ist. Um das zu überprüfen, würde ich den Fehler also erstmal beseitigen und dann weiter sehen. Wahrscheinlich wirst du dann feststellen, dass deine ursprüngliche Hypothese sich in Luft auflöst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2331412</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2331412</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Sat, 15 Jun 2013 19:25:45 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Memorymanagement new und delete on Sat, 15 Jun 2013 19:28:33 GMT]]></title><description><![CDATA[<p>Jannik schrieb:</p>
<blockquote>
<pre><code>zahlen2 = new int [max]; // Hier wird ein neues Array erstellt mit &quot;max&quot; Anzahl an       Feldern (ja, wuerde es, waere max nicht 0)
zahlen[max] = value;// Hier setze ich den Wert Value in den Array an der Stelle Max als der größtmöglichen (selbst wenn max nicht 0 waere und ueberhaupt was reserviert waere, laege zahlen[max] schon wieder in nicht reserviertem Terrain)
</code></pre>
</blockquote>
<p>P.S.: Aktivier mal Code-Tags</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2331413</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2331413</guid><dc:creator><![CDATA[Jonas OSDever]]></dc:creator><pubDate>Sat, 15 Jun 2013 19:28:33 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Memorymanagement new und delete on Sat, 15 Jun 2013 19:29:28 GMT]]></title><description><![CDATA[<p>Jannik schrieb:</p>
<blockquote>
<p>Anscheinend habe ich hier einen Fehler gemacht, leider seh ich ihn noch nicht um ehrlich zu sein.</p>
<pre><code>zahlen2 = new int [max]; // Hier wird ein neues Array erstellt mit &quot;max&quot; Anzahl an       Feldern
zahlen[max] = value;// Hier setze ich den Wert Value in den Array an der Stelle Max als der größtmöglichen
</code></pre>
<p>Das sind meine Gedanken dahinter, kann mir das wer erklären?</p>
</blockquote>
<p>Ja, der Fehler ist, dass Arrays mit 0, ..., max-1 indiziert werden. Dein Zugriff <code>zahlen[max]</code> greift also über das Arrayende hinaus.</p>
<p>BTW du solltest dir mal Gedanken über die Bedeutung deiner Variablen machen. Bei &quot;max&quot; würde ich erwarten, dass das der maximale gültige Index ist. Aber anfangs ist max=0, und 0 ist da noch kein gültiger Index.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2331414</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2331414</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Sat, 15 Jun 2013 19:29:28 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Memorymanagement new und delete on Sat, 15 Jun 2013 19:29:37 GMT]]></title><description><![CDATA[<p>Ich werds angehen, bemerkenswert dass mir der Core immer nach 4 Eingaben dumped. Bei einem &quot;undefinierten&quot; Fehler.</p>
<p>Mit den Listen bin ich hiermit auf dem richtigen Weg <a href="http://www.cplusplus.com/reference/list/list/?kw=list" rel="nofollow">http://www.cplusplus.com/reference/list/list/?kw=list</a> right?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2331415</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2331415</guid><dc:creator><![CDATA[Jannik]]></dc:creator><pubDate>Sat, 15 Jun 2013 19:29:37 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Memorymanagement new und delete on Sat, 15 Jun 2013 19:44:05 GMT]]></title><description><![CDATA[<p>Jannik schrieb:</p>
<blockquote>
<p>Mit den Listen bin ich hiermit auf dem richtigen Weg <a href="http://www.cplusplus.com/reference/list/list/?kw=list" rel="nofollow">http://www.cplusplus.com/reference/list/list/?kw=list</a> right?</p>
</blockquote>
<p>Das ist eine Implementierung eines Liste. Wenn du das meinst ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2331420</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2331420</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sat, 15 Jun 2013 19:44:05 GMT</pubDate></item></channel></rss>