<?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[Anfängerproblem: Freeing memory with delete verursacht ein Problem, das ich nicht erklären kann.]]></title><description><![CDATA[<p>Huhu</p>
<p>Ich lese gerade den C++ Primer Plus (in English, deswegen weiss ich nicht genau, wie man dem oben sagt... Memory befreien mit delete, oder wie sagt man das auf Deutsch? ^^).</p>
<p>Ich habe folgenden Code:</p>
<pre><code class="language-cpp">int main()
{

	using namespace std;

	int *test = new int[2];
	test[0] = 2;
	test[1] = 4;

	cout &lt;&lt; *test;
	test++;
	cout &lt;&lt; *test;

	delete [] test;

	cin.get();
	return 0;
}
</code></pre>
<p>Irgend etwas stimmt mit dem delte nicht. Ich habe auch über die Gefahren von delete was gelesen. Aber der Aufruf müsste meiner Meinung nach korrekt sein, denn ich habe den pointer ja mit new instanziert.</p>
<p>Es heisst jeweils &quot;Debug Assertion Failed&quot;. Kann mir das jemand erklären?</p>
<p>*Edit:<br />
Mir ist grad eingefallen, dass es am test++ liegen könnte und so ist es auch. Gibt es eine Möglichkeit wieder an den Ursprung des Pointer zu springen, so dass man das Memory trotzdem befreien kann? Oder wie sollte man das machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/255369/anfängerproblem-freeing-memory-with-delete-verursacht-ein-problem-das-ich-nicht-erklären-kann</link><generator>RSS for Node</generator><lastBuildDate>Sat, 12 Sep 2026 02:12:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/255369.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 29 Nov 2009 21:51:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Anfängerproblem: Freeing memory with delete verursacht ein Problem, das ich nicht erklären kann. on Sun, 29 Nov 2009 21:53:28 GMT]]></title><description><![CDATA[<p>Huhu</p>
<p>Ich lese gerade den C++ Primer Plus (in English, deswegen weiss ich nicht genau, wie man dem oben sagt... Memory befreien mit delete, oder wie sagt man das auf Deutsch? ^^).</p>
<p>Ich habe folgenden Code:</p>
<pre><code class="language-cpp">int main()
{

	using namespace std;

	int *test = new int[2];
	test[0] = 2;
	test[1] = 4;

	cout &lt;&lt; *test;
	test++;
	cout &lt;&lt; *test;

	delete [] test;

	cin.get();
	return 0;
}
</code></pre>
<p>Irgend etwas stimmt mit dem delte nicht. Ich habe auch über die Gefahren von delete was gelesen. Aber der Aufruf müsste meiner Meinung nach korrekt sein, denn ich habe den pointer ja mit new instanziert.</p>
<p>Es heisst jeweils &quot;Debug Assertion Failed&quot;. Kann mir das jemand erklären?</p>
<p>*Edit:<br />
Mir ist grad eingefallen, dass es am test++ liegen könnte und so ist es auch. Gibt es eine Möglichkeit wieder an den Ursprung des Pointer zu springen, so dass man das Memory trotzdem befreien kann? Oder wie sollte man das machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1815191</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1815191</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Sun, 29 Nov 2009 21:53:28 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerproblem: Freeing memory with delete verursacht ein Problem, das ich nicht erklären kann. on Sun, 29 Nov 2009 22:07:20 GMT]]></title><description><![CDATA[<p>Schau mal unter decrement nach. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1815194</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1815194</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 29 Nov 2009 22:07:20 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerproblem: Freeing memory with delete verursacht ein Problem, das ich nicht erklären kann. on Sun, 29 Nov 2009 22:08:16 GMT]]></title><description><![CDATA[<p>Du veränderst test ja zwischendurch. Woher soll delete denn dann wissen, dass es den Speicher freigeben soll, auf den test ursprünglich zeigte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1815195</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1815195</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 29 Nov 2009 22:08:16 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerproblem: Freeing memory with delete verursacht ein Problem, das ich nicht erklären kann. on Sun, 29 Nov 2009 22:12:46 GMT]]></title><description><![CDATA[<p>Es heißt &quot;Speicher freigeben&quot; ^^</p>
<p>Was spricht eigentlich gegen:</p>
<pre><code class="language-cpp">cout &lt;&lt; test[0];
cout &lt;&lt; test[1];
</code></pre>
<p>Ansonsten musst du alles, was du hochzählst (meiner Meinung nach) wieder runterzählen...</p>
<p>Soweit ich weiß, versucht er sonst von der Stelle an der du bist den Speicher freizugen. Das heißt, er will &quot;verbotenen&quot; Speicher frei geben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1815196</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1815196</guid><dc:creator><![CDATA[DarkShadow44]]></dc:creator><pubDate>Sun, 29 Nov 2009 22:12:46 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerproblem: Freeing memory with delete verursacht ein Problem, das ich nicht erklären kann. on Sun, 29 Nov 2009 22:14:25 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/18422">@drakon</a>:<br />
decrement kenne ich als Java Programmierer natürlich ^^</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19375">@SeppJ</a><br />
Ja, genau das habe ich befürchtet. Also müsste mal halt wieder entsprechend ein decrement verwenden, oder das ganze gleich einfach mit test[0], test[1], ...</p>
<p>Wie wird das in der Praix gemacht, wird beides angewendet oder sollte man das test++ eher vermeiden?</p>
<p>*Edit:<br />
@ DarkShadow44<br />
Ahh, genau... &quot;freigeben&quot; hatte ich gesucht ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1815197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1815197</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Sun, 29 Nov 2009 22:14:25 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerproblem: Freeing memory with delete verursacht ein Problem, das ich nicht erklären kann. on Sun, 29 Nov 2009 22:36:40 GMT]]></title><description><![CDATA[<p>Also ich finde test++ ist</p>
<ol>
<li>gefährlicher</li>
<li>unübersichtlicher</li>
</ol>
<p>Besser ist es wenn du durch test &quot;durchlaufen&quot; wilst test[i] zu verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1815205</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1815205</guid><dc:creator><![CDATA[DarkShadow44]]></dc:creator><pubDate>Sun, 29 Nov 2009 22:36:40 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerproblem: Freeing memory with delete verursacht ein Problem, das ich nicht erklären kann. on Sun, 29 Nov 2009 22:53:14 GMT]]></title><description><![CDATA[<p>Jap, ich denke auch, dass test[i] besser ist.</p>
<p>Danke für die Antworten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1815213</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1815213</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Sun, 29 Nov 2009 22:53:14 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerproblem: Freeing memory with delete verursacht ein Problem, das ich nicht erklären kann. on Sun, 29 Nov 2009 23:09:47 GMT]]></title><description><![CDATA[<p>Und ganz egal, was wann besser sein mag - prinzipiell gilt immer:<br />
Wenn Du Speicher dynamisch angefordert hast, musst Du Dir die zurückgegebene Adresse bis zum zugeöhörigen Freigeben irgendwo &quot;merken&quot;!</p>
<p>So hättest Du ruhig test++ nehmen können ... aber vorher irgendwo den alten Wert ablegen (und dann <em>darauf</em> delete[])!</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1815217</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1815217</guid><dc:creator><![CDATA[Simon2_ausgeloggt]]></dc:creator><pubDate>Sun, 29 Nov 2009 23:09:47 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerproblem: Freeing memory with delete verursacht ein Problem, das ich nicht erklären kann. on Mon, 30 Nov 2009 17:10:21 GMT]]></title><description><![CDATA[<p>Ok, mach ich <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>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1815495</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1815495</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Mon, 30 Nov 2009 17:10:21 GMT</pubDate></item></channel></rss>