<?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[Warum funktionieren Pointer nach dem Löschen immer noch?]]></title><description><![CDATA[<p>Habe mich schon immer gefragt, warum unten stehender Code funktioniert und richtig läuft.<br />
Die einzige Antwort, die ich mal gefunden hatte war, dass der Speicher praktisch einfach nur freigegeben wird und jetzt theoretisch von jedem anderen Programm überschrieben werden könnte.</p>
<pre><code class="language-cpp">int* pointer = new int;
delete pointer;
*pointer = 123;
cout &lt;&lt; *pointer &lt;&lt; endl;
</code></pre>
<p>Würde mich über eine Erklärung freuen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/289485/warum-funktionieren-pointer-nach-dem-löschen-immer-noch</link><generator>RSS for Node</generator><lastBuildDate>Sun, 05 Apr 2026 14:35:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/289485.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 05 Jul 2011 20:13:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Warum funktionieren Pointer nach dem Löschen immer noch? on Tue, 05 Jul 2011 20:13:54 GMT]]></title><description><![CDATA[<p>Habe mich schon immer gefragt, warum unten stehender Code funktioniert und richtig läuft.<br />
Die einzige Antwort, die ich mal gefunden hatte war, dass der Speicher praktisch einfach nur freigegeben wird und jetzt theoretisch von jedem anderen Programm überschrieben werden könnte.</p>
<pre><code class="language-cpp">int* pointer = new int;
delete pointer;
*pointer = 123;
cout &lt;&lt; *pointer &lt;&lt; endl;
</code></pre>
<p>Würde mich über eine Erklärung freuen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2089281</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089281</guid><dc:creator><![CDATA[soya_crack]]></dc:creator><pubDate>Tue, 05 Jul 2011 20:13:54 GMT</pubDate></item><item><title><![CDATA[Reply to Warum funktionieren Pointer nach dem Löschen immer noch? on Tue, 05 Jul 2011 20:17:23 GMT]]></title><description><![CDATA[<p>Das Verhalten ist undefiniert. Man weiss also nicht, was passiert. Es kann sein, dass das Programm problemlos weiterläuft. Es kann aber auch crashen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2089285</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089285</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Tue, 05 Jul 2011 20:17:23 GMT</pubDate></item><item><title><![CDATA[Reply to Warum funktionieren Pointer nach dem Löschen immer noch? on Tue, 05 Jul 2011 20:18:38 GMT]]></title><description><![CDATA[<p>Das was du da fabriziert hast, nennt sich undefiniertes Verhalten. Mit dem delete gibst du nur den Speicher frei, den new angefordert hat, aber der Zeiger zeigt trotzdem noch auf die selbe Adresse. Was der Heap-Manager mit diesem Speicher macht, ist seine Angelegenheit (wenn du Pech hast, fliegt dir der Code um die Ohren, weil der Speicher beim nächsten new-Aufruf belegt worden ist).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2089286</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089286</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 05 Jul 2011 20:18:38 GMT</pubDate></item><item><title><![CDATA[Reply to Warum funktionieren Pointer nach dem Löschen immer noch? on Tue, 05 Jul 2011 20:30:04 GMT]]></title><description><![CDATA[<p>Das Verhalten ist sehr wohl definiert. Bei dir aufm Rechner wirds immer wunderbar laufen. Beim Kunden wirds dir peinlichst um die Ohren fliegen. <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/2089289</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089289</guid><dc:creator><![CDATA[Dobi]]></dc:creator><pubDate>Tue, 05 Jul 2011 20:30:04 GMT</pubDate></item><item><title><![CDATA[Reply to Warum funktionieren Pointer nach dem Löschen immer noch? on Tue, 05 Jul 2011 20:33:55 GMT]]></title><description><![CDATA[<p>Dobi schrieb:</p>
<blockquote>
<p>Das Verhalten ist sehr wohl definiert. Bei dir aufm Rechner wirds immer wunderbar laufen. Beim Kunden wirds dir peinlichst um die Ohren fliegen. <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>
</blockquote>
<p>Wie ist es denn definiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2089291</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089291</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Tue, 05 Jul 2011 20:33:55 GMT</pubDate></item><item><title><![CDATA[Reply to Warum funktionieren Pointer nach dem Löschen immer noch? on Tue, 05 Jul 2011 20:35:38 GMT]]></title><description><![CDATA[<p>icarus2 schrieb:</p>
<blockquote>
<p>Dobi schrieb:</p>
<blockquote>
<p>Das Verhalten ist sehr wohl definiert. Bei dir aufm Rechner wirds immer wunderbar laufen. Beim Kunden wirds dir peinlichst um die Ohren fliegen. <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>
</blockquote>
<p>Wie ist es denn definiert?</p>
</blockquote>
<p>Ich glaube du hast den Witz nicht verstanden. Das hier tatsächlich wohl definierte verhalten ist, dass mit Sicherheit Murphys Gesetz zuschlägt, wenn man undefiniertes Verhalten programmiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2089292</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089292</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 05 Jul 2011 20:35:38 GMT</pubDate></item><item><title><![CDATA[Reply to Warum funktionieren Pointer nach dem Löschen immer noch? on Tue, 05 Jul 2011 20:39:15 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>icarus2 schrieb:</p>
<blockquote>
<p>Dobi schrieb:</p>
<blockquote>
<p>Das Verhalten ist sehr wohl definiert. Bei dir aufm Rechner wirds immer wunderbar laufen. Beim Kunden wirds dir peinlichst um die Ohren fliegen. <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>
</blockquote>
<p>Wie ist es denn definiert?</p>
</blockquote>
<p>Ich glaube du hast den Witz nicht verstanden. Das hier tatsächlich wohl definierte verhalten ist, dass mit Sicherheit Murphys Gesetz zuschlägt, wenn man undefiniertes Verhalten programmiert.</p>
</blockquote>
<p>Achsooo <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> *Blush*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2089293</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089293</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Tue, 05 Jul 2011 20:39:15 GMT</pubDate></item><item><title><![CDATA[Reply to Warum funktionieren Pointer nach dem Löschen immer noch? on Wed, 06 Jul 2011 04:09:53 GMT]]></title><description><![CDATA[<pre><code>delete pointer;
</code></pre>
<p>gibt nur den zugewiesenen Speicherbereich wieder frei, löscht aber nicht die Zeigervariabel, d.h. pointer zeigt immer noch auf die Adresse, auch wenn da jetzt nach der Freigabe sonst was drin stehen kann (undefiniert).<br />
Deswegen ist es gut einen Zeiger nach der delete Funktion auf 0 zu setzen.</p>
<pre><code class="language-cpp">delete pointer;
pointer = 0;

if (pointer == 0)
{
    ...
}
</code></pre>
<p>Gruß, x3meblue</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2089341</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089341</guid><dc:creator><![CDATA[x3meblue]]></dc:creator><pubDate>Wed, 06 Jul 2011 04:09:53 GMT</pubDate></item><item><title><![CDATA[Reply to Warum funktionieren Pointer nach dem Löschen immer noch? on Wed, 06 Jul 2011 04:16:27 GMT]]></title><description><![CDATA[<p>x3meblue schrieb:</p>
<blockquote>
<p>Deswegen ist es gut einen Zeiger nach der delete Funktion auf 0 zu setzen.</p>
</blockquote>
<p>I disagree <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /><br />
Wenn du so eine Logik verwendest, ist dein Design (meistens) in den Fritten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2089343</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089343</guid><dc:creator><![CDATA[Disagree]]></dc:creator><pubDate>Wed, 06 Jul 2011 04:16:27 GMT</pubDate></item><item><title><![CDATA[Reply to Warum funktionieren Pointer nach dem Löschen immer noch? on Wed, 06 Jul 2011 06:23:37 GMT]]></title><description><![CDATA[<p>Disagree schrieb:</p>
<blockquote>
<p>I disagree <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /><br />
Wenn du so eine Logik verwendest, ist dein Design (meistens) in den Fritten.</p>
</blockquote>
<p>Sehe ich auch so. Lieber dafür sorgen, dass der Zeiger solange wie möglich gültig ist und nachher kein Zugriff mehr darauf erfolgt.</p>
<p>Auch <code>delete</code> zu verwenden ist ein Hinweis darauf, dass man vielleicht besser RAII einsetzen würde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2089351</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089351</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 06 Jul 2011 06:23:37 GMT</pubDate></item><item><title><![CDATA[Reply to Warum funktionieren Pointer nach dem Löschen immer noch? on Wed, 06 Jul 2011 06:34:50 GMT]]></title><description><![CDATA[<p>x3meblue schrieb:</p>
<blockquote>
<p>Deswegen ist es gut einen Zeiger nach der delete Funktion auf 0 zu setzen.</p>
</blockquote>
<ol>
<li>delete Funktion gibts nicht.</li>
<li>Es ist nicht unbedingt gut, einen Zeiger nach der delete-Funktion auf 0 zu setzen. Ausnahmen sind Zeiger, die Bestandteile von Objekten sind, und wo es in Ordnung ist, wenn die 0 sind. An allen anderen Stellen sollte der Scope so oder so kurz nach dem delete verlassen werden, der Pointer verschwinden und muss deshalb nicht &quot;nullifiziert&quot; werden.</li>
</ol>
]]></description><link>https://www.c-plusplus.net/forum/post/2089352</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089352</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 06 Jul 2011 06:34:50 GMT</pubDate></item><item><title><![CDATA[Reply to Warum funktionieren Pointer nach dem Löschen immer noch? on Wed, 06 Jul 2011 07:00:29 GMT]]></title><description><![CDATA[<p>soya_crack schrieb:</p>
<blockquote>
<p>[...] warum unten stehender Code funktioniert und richtig läuft.</p>
</blockquote>
<p>Die offensichtliche Erklärung fehlt imho: Weil Deine Definition von &quot;funktioniert&quot; falsch ist. Im gegebenen Beispiel bekommst Du nur _zufällig_ das Ergebnis, was Du erwartest, obwohl das Programm inkorrekt ist.</p>
<p>Das wäre etwas vergleichbar damit ein kaputtes Auto einen Berg runterrollen zu lassen und dann zu argumentieren, das Auto sei ja nicht kaputt weil es fährt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2089356</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089356</guid><dc:creator><![CDATA[loks]]></dc:creator><pubDate>Wed, 06 Jul 2011 07:00:29 GMT</pubDate></item><item><title><![CDATA[Reply to Warum funktionieren Pointer nach dem Löschen immer noch? on Wed, 06 Jul 2011 07:13:38 GMT]]></title><description><![CDATA[<p>Ja, da habe ich mich vielleicht etwas falsch ausgedrückt. Ich meinte natürlich &quot;läuft&quot; und nicht gleich abschmiert.</p>
<p>Danke für die prompten Antworten, war ja dann so wie ich es mir vorgestellt habe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2089364</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089364</guid><dc:creator><![CDATA[soya_crack]]></dc:creator><pubDate>Wed, 06 Jul 2011 07:13:38 GMT</pubDate></item><item><title><![CDATA[Reply to Warum funktionieren Pointer nach dem Löschen immer noch? on Wed, 06 Jul 2011 07:14:28 GMT]]></title><description><![CDATA[<blockquote>
<p>Das wäre etwas vergleichbar damit ein kaputtes Auto einen Berg runterrollen zu lassen und dann zu argumentieren, das Auto sei ja nicht kaputt weil es fährt.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2089365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089365</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Wed, 06 Jul 2011 07:14:28 GMT</pubDate></item><item><title><![CDATA[Reply to Warum funktionieren Pointer nach dem Löschen immer noch? on Wed, 06 Jul 2011 15:14:10 GMT]]></title><description><![CDATA[<p>@Disagree: Wäre gut, wenn du auch erklären könntest warum, dann hätten alle was davon, so ist dein Beitrag sowohl überflüssig als auch nutzlos.</p>
<p>Gruß, x3meblue</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2089582</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089582</guid><dc:creator><![CDATA[x3meblue]]></dc:creator><pubDate>Wed, 06 Jul 2011 15:14:10 GMT</pubDate></item><item><title><![CDATA[Reply to Warum funktionieren Pointer nach dem Löschen immer noch? on Wed, 06 Jul 2011 15:37:09 GMT]]></title><description><![CDATA[<p>x3meblue schrieb:</p>
<blockquote>
<p>@Disagree: Wäre gut, wenn du auch erklären könntest warum, dann hätten alle was davon, so ist dein Beitrag sowohl überflüssig als auch nutzlos.</p>
<p>Gruß, x3meblue</p>
</blockquote>
<p>Er hat doch erklärt, dass es auf Designfehler hindeutet. Nexus hat bessere Alternativen genannt. Wenn bei deinem Programm überhaupt die Chance besteht, dass ein ungültiger Pointer gelöscht wird, dann ist schon was falsch. Und mit dem Nullsetzen verschleppst du den Fehler auch noch, wodurch er wesentlich schwerer zu finden ist. Überhaupt sollte ein ungültiger Pointer kurz vorm Ende seiner Lebenszeit stehen (siehe auch wieder Nexus).</p>
<p>Nullsetzen solltest du nur, wenn dies einen besonderen Wert des Pointers bedeutet der an anderer Stelle auch geprüft wird (und zwar nicht vom delete!) und der Pointer danach überhaupt noch weiterlebt, z.B. wird das in komplexen Datenstrukturen wie Binärbäumen oft gemacht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2089590</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089590</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 06 Jul 2011 15:37:09 GMT</pubDate></item><item><title><![CDATA[Reply to Warum funktionieren Pointer nach dem Löschen immer noch? on Wed, 06 Jul 2011 15:40:52 GMT]]></title><description><![CDATA[<p>sagt mal:</p>
<p>wieso ist es eigentlich sinnvoll (bzw nicht vom std vorgeschrieben) dass delete den zeiger nicht automatisch gleich mit auf 0 setzt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2089592</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089592</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Wed, 06 Jul 2011 15:40:52 GMT</pubDate></item><item><title><![CDATA[Reply to Warum funktionieren Pointer nach dem Löschen immer noch? on Wed, 06 Jul 2011 15:47:49 GMT]]></title><description><![CDATA[<p>Erstens kostet es ein wenig Performance und man bezahlt bekanntlich für nichts, was man nicht braucht.</p>
<p>Zweitens bekommst du kein konsistentes Verhalten hin:</p>
<pre><code class="language-cpp">int* x = new int;
int* y = x;
delete y;    // x == 0?
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2089595</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089595</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Wed, 06 Jul 2011 15:47:49 GMT</pubDate></item><item><title><![CDATA[Reply to Warum funktionieren Pointer nach dem Löschen immer noch? on Wed, 06 Jul 2011 15:48:15 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>wieso ist es eigentlich sinnvoll (bzw nicht vom std vorgeschrieben) dass delete den zeiger nicht automatisch gleich mit auf 0 setzt?</p>
</blockquote>
<p>Wurde doch schon gesagt dass das 0 setzen des Zeigers gefährlich sein kann.<br />
Warum sollte man das also wollen?</p>
<p>Nie nie nie den Zeiger 0 setzen. Das fürht zu den blödsten Problemen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2089596</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089596</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Wed, 06 Jul 2011 15:48:15 GMT</pubDate></item><item><title><![CDATA[Reply to Warum funktionieren Pointer nach dem Löschen immer noch? on Wed, 06 Jul 2011 16:00:27 GMT]]></title><description><![CDATA[<p>Nun, an anderen Stellen hört man es umgekehrt, nämlich, das auf 0 setzen gängige Praxis und es eben nicht gefährlich ist. Scheint wohl so ein Thema zu sein, wo es geteilte Meinungen gibt und jeder selbst entscheiden muss. Aber gut, das war ja auch nicht das eigentlich Thema des Threads.</p>
<p>Grüßla, x3meblue</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2089602</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089602</guid><dc:creator><![CDATA[x3meblue]]></dc:creator><pubDate>Wed, 06 Jul 2011 16:00:27 GMT</pubDate></item><item><title><![CDATA[Reply to Warum funktionieren Pointer nach dem Löschen immer noch? on Wed, 06 Jul 2011 16:07:28 GMT]]></title><description><![CDATA[<p>x3meblue schrieb:</p>
<blockquote>
<p>Nun, an anderen Stellen hört man es umgekehrt,</p>
</blockquote>
<p>Wenn du nicht auf 0 setzt und doppelt löscht stürzt dein Programm garantiert in der Testphase ab und du kannst den Bug fixen. Setzt du aber auf 0, stürtzt es garantiert nicht in der Testphase ab und du shipst den Bug zum Kunden.</p>
<p>Klar ist es verführerisch auf 0 zu setzen. Das bedeutet weniger entdeckte Bugs in der Testphase, das bedeutet weniger Arbeit. Aber es ist trotzdem eine schlechte Idee.</p>
<p>Lustigerweise höre ich diese auf 0 setzen Standpunkte nur von C++ Entwicklern. C Entwickler sind mir noch keine untergekommen die das gerne machen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2089605</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089605</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Wed, 06 Jul 2011 16:07:28 GMT</pubDate></item><item><title><![CDATA[Reply to Warum funktionieren Pointer nach dem Löschen immer noch? on Thu, 07 Jul 2011 10:53:57 GMT]]></title><description><![CDATA[<p>genau so kann man doch argumentieren, dass man auf einen gelöschten noch mal zugreift und es klappt.<br />
wenn man ihn auf 0 gesetzt hätte, dann hätte es gleich geknallt.</p>
<p>welcher bug landet denn beim kunden, wenn ich einen zeiger lösche, dann auf 0 stelle und noch mal lösche?</p>
<p>jenz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2089847</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089847</guid><dc:creator><![CDATA[jenz]]></dc:creator><pubDate>Thu, 07 Jul 2011 10:53:57 GMT</pubDate></item><item><title><![CDATA[Reply to Warum funktionieren Pointer nach dem Löschen immer noch? on Thu, 07 Jul 2011 11:08:28 GMT]]></title><description><![CDATA[<p>jenz schrieb:</p>
<blockquote>
<p>welcher bug landet denn beim kunden, wenn ich einen zeiger lösche, dann auf 0 stelle und noch mal lösche?</p>
</blockquote>
<p>Das mag im ersten Moment nicht als Bug erscheinen, aber grundsätzlich deutet es tendenziell auf Fehler oder Probleme hin, wenn man Variablen &quot;recycled&quot;. Es mag Stellen geben wo es Sinn macht, dies sollte aber die Ausnahme nicht die Regel sein.</p>
<p>Zudem ist selbst verwaltete Zeiger eine Gefahrenquelle, häufig sind (&quot;schlanke&quot;) Smartpointer die bessere Wahl (Ich spreche hier ausschließlich von der Verwaltung, nicht von ersetzen von Zeigerübergaben etc.).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2089853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089853</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 07 Jul 2011 11:08:28 GMT</pubDate></item><item><title><![CDATA[Reply to Warum funktionieren Pointer nach dem Löschen immer noch? on Thu, 07 Jul 2011 11:17:42 GMT]]></title><description><![CDATA[<p>was meinst du mit &quot;recycled&quot;<br />
a) einen gelöschten pointer 0en und noch mal löschen<br />
b) einen gelöschten pointer nicht 0en und noch mal benutzen?</p>
<p>gerade b) würde man durch 0 setzen verhinden.</p>
<p>sowohl a) als auch b) sollte man natürlich nicht machen. kann aber bestimmt im eifer des gefechts mal passieren.<br />
wenn, dann sollte es doch gleich in der entwicklungsphase knallen und da sehe ich b) als gefährlicher an als a)</p>
<p>oder?</p>
<p>jenz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2089858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089858</guid><dc:creator><![CDATA[jenz]]></dc:creator><pubDate>Thu, 07 Jul 2011 11:17:42 GMT</pubDate></item><item><title><![CDATA[Reply to Warum funktionieren Pointer nach dem Löschen immer noch? on Thu, 07 Jul 2011 11:22:27 GMT]]></title><description><![CDATA[<p>jenz schrieb:</p>
<blockquote>
<p>welcher bug landet denn beim kunden, wenn ich einen zeiger lösche, dann auf 0 stelle und noch mal lösche?</p>
</blockquote>
<p>Du hast einen Logikfehler in deinem Programm. Wenn du hier doppelt aufräumst ist die wahrscheinlichkeit groß, dass du vorher falsch aufgeräumt hast oder jetzt falsch aufräumst. uU wolltest du zB das erste delete ja garnicht und hast nachher noch Daten dorthin geschrieben wo früher das Objekt war und damit dem 0 Zeiger sind die nie geschrieben worden.</p>
<p>Fakt ist: doppeltes Aufräumen ist ein Logikfehler.<br />
Weiterer Fakt ist: nur in altem C++ Code wird das versucht wegzudiskutieren. In anderen Sprachen (auch C) wird sowas garnicht erst diskutiert und nie benutzt.</p>
<p>Es geht dabei nicht darum dass es schlecht ist Variablen zu recyclen - denn Zeiger auf 0 setzen macht durchaus Sinn - nur automatisch mit jedem delete auf 0 setzen ist das Problem.</p>
<p>Die Denkweise: wenn es nicht abstürtzt ist es korrekt - ist hier das Problem.<br />
Dabei sind Abstürze gut. Wir wollen Abstürze. Sie helfen Fehler zu finden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2089862</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089862</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Thu, 07 Jul 2011 11:22:27 GMT</pubDate></item><item><title><![CDATA[Reply to Warum funktionieren Pointer nach dem Löschen immer noch? on Thu, 07 Jul 2011 13:38:30 GMT]]></title><description><![CDATA[<p>okay, genau das meine ich, also das abstürze bei der fehlersuche helfen</p>
<p>allerdings bin ich mir nicht ganz so sicher, dass es _immer_ ein logikfehler ist, wenn man doppelt löscht.<br />
aber man kann es auch jedenfall immer so lösen, dass man nicht doppelt löscht.</p>
<p>jenz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2089940</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089940</guid><dc:creator><![CDATA[jenz]]></dc:creator><pubDate>Thu, 07 Jul 2011 13:38:30 GMT</pubDate></item></channel></rss>