<?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[Zeiger auf lokale Variable auflösen]]></title><description><![CDATA[<p>Hi,</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

int* f() {
	int x=10;
	return &amp;x;
}

int main() {
	std::cout&lt;&lt; * f() &lt;&lt;std::endl;
}
</code></pre>
<p>kann mir jemand erklären, warum der Code überhaupt funktioniert? Die Funktion ermittelt die Adresse einer lokalen Variablen und mit &quot;* f()&quot; kann ich den Zeiger darauf wieder dereferenzieren, obwohl die Variable doch schon zerstört sein müsste. Es wird komischerweise jedoch lediglich eine Warnung ausgegeben:</p>
<blockquote>
<p>In function ‘int* f()’:<br />
warning: address of local variable ‘x’ returned</p>
</blockquote>
<p>Danke <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/topic/212272/zeiger-auf-lokale-variable-auflösen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 14 Oct 2026 20:25:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/212272.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 03 May 2008 23:45:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zeiger auf lokale Variable auflösen on Sat, 03 May 2008 23:45:44 GMT]]></title><description><![CDATA[<p>Hi,</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

int* f() {
	int x=10;
	return &amp;x;
}

int main() {
	std::cout&lt;&lt; * f() &lt;&lt;std::endl;
}
</code></pre>
<p>kann mir jemand erklären, warum der Code überhaupt funktioniert? Die Funktion ermittelt die Adresse einer lokalen Variablen und mit &quot;* f()&quot; kann ich den Zeiger darauf wieder dereferenzieren, obwohl die Variable doch schon zerstört sein müsste. Es wird komischerweise jedoch lediglich eine Warnung ausgegeben:</p>
<blockquote>
<p>In function ‘int* f()’:<br />
warning: address of local variable ‘x’ returned</p>
</blockquote>
<p>Danke <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/1502865</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1502865</guid><dc:creator><![CDATA[moagnus]]></dc:creator><pubDate>Sat, 03 May 2008 23:45:44 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf lokale Variable auflösen on Sat, 03 May 2008 23:47:09 GMT]]></title><description><![CDATA[<p>zufall das es funktioniert</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1502866</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1502866</guid><dc:creator><![CDATA[^^]]></dc:creator><pubDate>Sat, 03 May 2008 23:47:09 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf lokale Variable auflösen on Sun, 04 May 2008 15:03:37 GMT]]></title><description><![CDATA[<p>^^ schrieb:</p>
<blockquote>
<p>zufall das es funktioniert</p>
</blockquote>
<p>Jap.<br />
Es KANN funktionieren, muss aber nicht.</p>
<p>Es funktioniert noch so einiges, aber das heisst nicht, dass es das immer tut. <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/1503133</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1503133</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 04 May 2008 15:03:37 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf lokale Variable auflösen on Sun, 04 May 2008 17:03:25 GMT]]></title><description><![CDATA[<p>Interessant. Ich dachte nur, dass der g++ (4.2) bei solchen einfachen Dingen standardkonform bleiben würde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1503216</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1503216</guid><dc:creator><![CDATA[moagnus]]></dc:creator><pubDate>Sun, 04 May 2008 17:03:25 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf lokale Variable auflösen on Sun, 04 May 2008 17:04:32 GMT]]></title><description><![CDATA[<p>moagnus schrieb:</p>
<blockquote>
<p>Interessant. Ich dachte nur, dass der g++ (4.2) bei solchen einfachen Dingen standardkonform bleiben würde.</p>
</blockquote>
<p>und?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1503220</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1503220</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 04 May 2008 17:04:32 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf lokale Variable auflösen on Sun, 04 May 2008 17:09:35 GMT]]></title><description><![CDATA[<p>moagnus schrieb:</p>
<blockquote>
<p>Interessant. Ich dachte nur, dass der g++ (4.2) bei solchen einfachen Dingen standardkonform bleiben würde.</p>
</blockquote>
<p>tut er doch auch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1503226</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1503226</guid><dc:creator><![CDATA[darthdespotism]]></dc:creator><pubDate>Sun, 04 May 2008 17:09:35 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf lokale Variable auflösen on Sun, 04 May 2008 17:31:31 GMT]]></title><description><![CDATA[<p>Naja, wenns Zufall ist, ists kein Standardverhalten, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1503242</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1503242</guid><dc:creator><![CDATA[moagnus]]></dc:creator><pubDate>Sun, 04 May 2008 17:31:31 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf lokale Variable auflösen on Sun, 04 May 2008 17:53:36 GMT]]></title><description><![CDATA[<p>moagnus schrieb:</p>
<blockquote>
<p>Naja, wenns Zufall ist, ists kein Standardverhalten, oder?</p>
</blockquote>
<p>In C++ gibt es einiges das undefiniert ist, aber deshalb ist es dennoch hat das nichts mit Standardkonformität zu tun (C++ Standard).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1503250</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1503250</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Sun, 04 May 2008 17:53:36 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf lokale Variable auflösen on Sun, 04 May 2008 17:58:21 GMT]]></title><description><![CDATA[<p>Ok, wieder was gelernt. <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="😉"
    /><br />
Aber wird das dann nicht ein bisschen inkonsistent mit der Speicherverwaltung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1503253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1503253</guid><dc:creator><![CDATA[moagnus]]></dc:creator><pubDate>Sun, 04 May 2008 17:58:21 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf lokale Variable auflösen on Sun, 04 May 2008 18:14:12 GMT]]></title><description><![CDATA[<p>moagnus schrieb:</p>
<blockquote>
<p>Ok, wieder was gelernt. <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="😉"
    /><br />
Aber wird das dann nicht ein bisschen inkonsistent mit der Speicherverwaltung?</p>
</blockquote>
<p>Wieso? C++ ist hier sehr konsequent: Dein Fall ist undefiniert (Das Objekt auf das der Zeiger zeigt existiert nicht mehr, und in deinem Fall wurde der Speicher einfach seit dem Freigeben nicht wieder überschrieben; Sprich du greifst auf Datenmüll zu der zufälligerweise noch dem alten Stand entspricht).</p>
<p>Speicher wird nicht nach der Freigabe ausgenullt oder so.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1503260</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1503260</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Sun, 04 May 2008 18:14:12 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf lokale Variable auflösen on Sun, 04 May 2008 18:32:35 GMT]]></title><description><![CDATA[<p>Gut, danke für die Erklärung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1503272</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1503272</guid><dc:creator><![CDATA[moagnus]]></dc:creator><pubDate>Sun, 04 May 2008 18:32:35 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf lokale Variable auflösen on Sun, 04 May 2008 18:37:34 GMT]]></title><description><![CDATA[<p>Es geht sogar noch ein bisschen weiter; mit der Freigabe des Speichers wurde der Zeiger(-wert) selbst ungültig - <em>jede</em> Verwendung dieses Wertes (z.B. Speichern in einer Zeigervariable) resultiert für sich bereits in undefiniertem Verhalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1503278</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1503278</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 04 May 2008 18:37:34 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf lokale Variable auflösen on Sun, 04 May 2008 18:45:04 GMT]]></title><description><![CDATA[<p>Soweit ichs verstanden habe, kann der Speicher nach Funktionsende und damit nach &quot;Zerstörung&quot; der lokalen Variablen wieder andersweitig vom BS verwendet und beschrieben werden. Wenn ich jetzt mit dem Zeiger auf diesen Inhalt zugreife, benutze ich nicht mehr den Wert, den ich eigentlich benutzen will. Also ist das Verhalten undefiniert. Evtl. steht an der Stelle nicht mal mehr ein int. Dann stimmt auch der int-Zeiger vom Typ her nicht mehr überein. Meinst du das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1503281</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1503281</guid><dc:creator><![CDATA[moagnus]]></dc:creator><pubDate>Sun, 04 May 2008 18:45:04 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf lokale Variable auflösen on Sun, 04 May 2008 18:54:39 GMT]]></title><description><![CDATA[<p>würdest du im debug-Modus kompilieren, müsste so eine Handlung zu einem Segmentation Fault führen, und das Programm beendet werden. Das sich der Wert noch nicht geänder hat, ist kein zufall, sondern nicht anders Möglich, denn es wurde seit der Freigabe des Speichers noch keine neue Lokale Variable angelegt. Würdest du bevor du die Variable ausgibst noch eine Weitere initialisieren müsste sich der Wert auch änders. Der Speicer kann nicht von anderen Programmen belegt werden, weil es sich um den Stack handelt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1503285</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1503285</guid><dc:creator><![CDATA[Krux]]></dc:creator><pubDate>Sun, 04 May 2008 18:54:39 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf lokale Variable auflösen on Sun, 04 May 2008 19:02:57 GMT]]></title><description><![CDATA[<p>Ach, du hast Recht. Es gibt ja nen gekapselten Adressraum für das Programm.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1503290</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1503290</guid><dc:creator><![CDATA[moagnus]]></dc:creator><pubDate>Sun, 04 May 2008 19:02:57 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf lokale Variable auflösen on Sun, 04 May 2008 19:32:05 GMT]]></title><description><![CDATA[<p>moagnus schrieb:</p>
<blockquote>
<p>Soweit ichs verstanden habe, kann der Speicher nach Funktionsende und damit nach &quot;Zerstörung&quot; der lokalen Variablen wieder andersweitig vom BS verwendet und beschrieben werden. Wenn ich jetzt mit dem Zeiger auf diesen Inhalt zugreife, benutze ich nicht mehr den Wert, den ich eigentlich benutzen will. Also ist das Verhalten undefiniert. Evtl. steht an der Stelle nicht mal mehr ein int. Dann stimmt auch der int-Zeiger vom Typ her nicht mehr überein. Meinst du das?</p>
</blockquote>
<p>Das ist eine mögliche Variante von undefiniert, kommt aber nicht zum eigentlichen Punkt. <em>Jede</em> Verwendung des Zeigerwertes (und da der Rückgabewert der Funktion ein rvalue ist bedeutet das hier: jede beliebige Operation mit dem Funktionsaufruf, die diesen Wert nicht verwirft (=cast nach void, ,-Operator, Nicht-Verwendung des Funktionswertes) ist undefiniert. Wie eine konkrete Implementation hier reagiert, stellt dann nur eine Möglichkeit dar. Es gibt einen praktisch bedeutsamen analogen Fall:</p>
<pre><code class="language-cpp">int* p = new int;
delete p;
</code></pre>
<p>Visual C++ (wie wohl auch andere Compiler) verändert im Debug-Modus beim delete das Zeigerobjekt p (das ist erlaubt, obwohl diese Veränderung durchaus beobachtbar sein kann - wir könnten ja p einfach als rohen Speicher anfassen und untersuchen, per memcmp und Ähnlichem). Der Wert, den p dann erhält, zeigt üblicherweise auf nicht existenten Speicher um dann eine Zugriffsverletzung auszulösen. Der Punkt dabei ist, dass der Wert p nach dem delete nichts mit dem davor zu tun hat. Ein vergleichbarer Vorgang (sogar problemloser, da wir hier nicht auf die Repräsentation zugreifen können) ist durchaus bei der Rückkehr aus der Funktion denkbar. Der bloße Versuch, diesen Wert z.B. zu dereferenzieren ist dann schon problematisch, zum Lesen irgendeines Wertes kommen wir gar nicht erst. Und das ist nur eine Möglichkeit, wie eine Implementation hier reagieren könnte (eine Andere wäre z.B. bei einem Interpreter, dass der Wert der Gleiche ist, aber nicht mehr mit einer realen Adresse verknüpft ist - und wenn ich länger drüber nachdenke, fallen mir sicher noch mehr Szenarien ein).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1503302</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1503302</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 04 May 2008 19:32:05 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf lokale Variable auflösen on Sun, 04 May 2008 21:04:12 GMT]]></title><description><![CDATA[<p>Ich versteh leider immer noch nicht ganz, was du meinst.<br />
Was ich verstanden zu haben glaube: Compiliert man dein Code-Beispiel im Debug-Modus, wird die Speicheradresse geändert, die in p abgelegt ist. Deswegen macht Dereferenzierung keinen Sinn.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1503344</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1503344</guid><dc:creator><![CDATA[moagnus]]></dc:creator><pubDate>Sun, 04 May 2008 21:04:12 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf lokale Variable auflösen on Mon, 05 May 2008 07:28:53 GMT]]></title><description><![CDATA[<p>Also camper, dass eine Implementierung den Wert von &quot;p&quot; ändern darf beim delete ist mir neu. MSVC macht das auch *nicht*. MSVC überschreibt nur den Speicher der freigegeben wurde mit 0xDD, allerdings nicht die Zeigervariable selbst.<br />
Und wie gesagt, ich glaube auch nicht dass das legal wäre.<br />
(Davon abgesehen dass es kaum noch sinnvolle Dinge gibt die man mit &quot;p&quot; machen kann nach dem delete)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1503436</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1503436</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 05 May 2008 07:28:53 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf lokale Variable auflösen on Mon, 05 May 2008 08:34:49 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Also camper, dass eine Implementierung den Wert von &quot;p&quot; ändern darf beim delete ist mir neu. MSVC macht das auch *nicht*. MSVC überschreibt nur den Speicher der freigegeben wurde mit 0xDD, allerdings nicht die Zeigervariable selbst.</p>
</blockquote>
<p>bin mir ziemlich sicher, das die debugging-rtl nach dem delete den pointer auf 0xfeeefeee zeigen lässt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1503468</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1503468</guid><dc:creator><![CDATA[du irrst]]></dc:creator><pubDate>Mon, 05 May 2008 08:34:49 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf lokale Variable auflösen on Mon, 05 May 2008 08:50:16 GMT]]></title><description><![CDATA[<p>du irrst schrieb:</p>
<blockquote>
<p>hustbaer schrieb:</p>
<blockquote>
<p>Also camper, dass eine Implementierung den Wert von &quot;p&quot; ändern darf beim delete ist mir neu. MSVC macht das auch *nicht*. MSVC überschreibt nur den Speicher der freigegeben wurde mit 0xDD, allerdings nicht die Zeigervariable selbst.</p>
</blockquote>
<p>bin mir ziemlich sicher, das die debugging-rtl nach dem delete den pointer auf 0xfeeefeee zeigen lässt.</p>
</blockquote>
<p>Ja? Also bei mir wird der Speicher angefasst und auf 0xFEEE gesetzt, und nicht der Pointer selbst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1503478</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1503478</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Mon, 05 May 2008 08:50:16 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf lokale Variable auflösen on Mon, 05 May 2008 09:01:42 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Ja? Also bei mir wird der Speicher angefasst und auf 0xFEEE gesetzt, und nicht der Pointer selbst.</p>
</blockquote>
<p>ja, hast recht. ich hab mich an &quot;access violation reading address 0xfeeefeee&quot; erinnert. das war aber ein pointer in einem gelöschten objekt, kein alleinstehender pointer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1503485</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1503485</guid><dc:creator><![CDATA[ich irrte]]></dc:creator><pubDate>Mon, 05 May 2008 09:01:42 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf lokale Variable auflösen on Mon, 05 May 2008 10:03:20 GMT]]></title><description><![CDATA[<p>ich irrte schrieb:</p>
<blockquote>
<p>Tachyon schrieb:</p>
<blockquote>
<p>Ja? Also bei mir wird der Speicher angefasst und auf 0xFEEE gesetzt, und nicht der Pointer selbst.</p>
</blockquote>
<p>ja, hast recht. ich hab mich an &quot;access violation reading address 0xfeeefeee&quot; erinnert. das war aber ein pointer in einem gelöschten objekt, kein alleinstehender pointer.</p>
</blockquote>
<p>Ich kann es jetzt auch gerade nicht nachvollziehen, allerdings MSDN <a href="http://msdn.microsoft.com/en-us/library/h6227113.aspx" rel="nofollow">delete Operator (C++)</a></p>
<blockquote>
<p>If the operand to the delete operator is a modifiable l-value, its value is undefined after the object is deleted.</p>
</blockquote>
<p>&quot;undefined&quot; meint hier wahrscheinlich &quot;indeterminate&quot; in standardesisch.</p>
<p>Was die Standardkonformität dieses Verhaltens angeht, muss ich noch mal recherchieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1503514</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1503514</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Mon, 05 May 2008 10:03:20 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf lokale Variable auflösen on Tue, 06 May 2008 09:28:27 GMT]]></title><description><![CDATA[<p>Nö, ok, wenn das so im Standard steht dann wird das schon gelten. Krass <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="🙂"
    /><br />
Naja, eigentlich eh ziemlich egal, weil man ja sowieso nixmehr mit dem Zeiger machen dürfte. Nichtmal lesen/vergleichen mit einem anderen Zeiger.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1504038</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1504038</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 06 May 2008 09:28:27 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf lokale Variable auflösen on Tue, 06 May 2008 15:16:11 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Nö, ok, wenn das so im Standard steht dann wird das schon gelten. Krass :)...</p>
</blockquote>
<p>Vielleicht wollten sie damit einer &quot;delete setzt auf 0&quot;-Implementierung die Hintertür auflassen.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1504297</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1504297</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 06 May 2008 15:16:11 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf lokale Variable auflösen on Tue, 06 May 2008 18:11:56 GMT]]></title><description><![CDATA[<p>Auch möglich.</p>
<p>Ich glaube mich zu erinnern dass im Standard irgendwo steht dass man einen Zeiger der auf etwas zeigt was bereits gelöscht wurde, nichtmehr anfassen darf, mit der einzigen Ausnahme dass man ihn überschreiben darf. Und irgendwo las ich mal dass vermutlich die Überlegung dahinter bzw. der Grund dafür jene(r) ist, dass es Plattformen gibt bzw. geben könnte, wo bereits das Laden eines ungültigen Zeigers in ein Register zu einem Problem führen könnte. (Weil es z.B. das Segment bzw. die Seite auf die der Zeiger verweist garnichtmehr gibt, und eine Gültigkeitsprüfung schon beim Laden in ein Register erfolgt, nicht erst bei der Dereferenzierung.) Auf solchen Plattformen wäre es dann einfach doof für die Compiler Entwickler wenn es erlaubt wäre den Wert nach einem delete noch anzufassen.</p>
<p>Da man den Wert also nichtmehr anfassen darf kann man im Standard auch gleich sagen er ist danach undefiniert, weil's ja eh egal ist -- &quot;legal&quot; kann man ja eh nixmehr damit machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1504412</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1504412</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 06 May 2008 18:11:56 GMT</pubDate></item></channel></rss>