<?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[Verhalten definiert?]]></title><description><![CDATA[<p>Hallo</p>
<p>Ist das Verhalten dieses Quellcodes definiert?</p>
<pre><code class="language-cpp">int *foo = new int[13];
delete &amp;foo[12];
</code></pre>
<p>MfG, EOutOfResources</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/284182/verhalten-definiert</link><generator>RSS for Node</generator><lastBuildDate>Sat, 22 Aug 2026 05:45:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/284182.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 27 Mar 2011 13:26:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verhalten definiert? on Sun, 27 Mar 2011 13:26:36 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ist das Verhalten dieses Quellcodes definiert?</p>
<pre><code class="language-cpp">int *foo = new int[13];
delete &amp;foo[12];
</code></pre>
<p>MfG, EOutOfResources</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2040842</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2040842</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Sun, 27 Mar 2011 13:26:36 GMT</pubDate></item><item><title><![CDATA[Reply to Verhalten definiert? on Sun, 27 Mar 2011 13:36:12 GMT]]></title><description><![CDATA[<p>Nein. Wie kommst du überhaupt darauf, und als was sollte das ggf. definiert sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2040847</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2040847</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Sun, 27 Mar 2011 13:36:12 GMT</pubDate></item><item><title><![CDATA[Reply to Verhalten definiert? on Sun, 27 Mar 2011 13:36:22 GMT]]></title><description><![CDATA[<p>Nein, natürlich nicht. Was sollte deiner Erwartung nach passieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2040848</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2040848</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 27 Mar 2011 13:36:22 GMT</pubDate></item><item><title><![CDATA[Reply to Verhalten definiert? on Sun, 27 Mar 2011 13:38:39 GMT]]></title><description><![CDATA[<p>Mein Kollege hat mit mir gewettet, dass dieser Code das Array um ein Element verkleinert.</p>
<p>Danke und mfG, EOutOfResources.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2040850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2040850</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Sun, 27 Mar 2011 13:38:39 GMT</pubDate></item><item><title><![CDATA[Reply to Verhalten definiert? on Sun, 27 Mar 2011 13:43:17 GMT]]></title><description><![CDATA[<p>EOutOfResources schrieb:</p>
<blockquote>
<p>Ist das Verhalten dieses Quellcodes definiert?</p>
</blockquote>
<p>Nö.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2040852</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2040852</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sun, 27 Mar 2011 13:43:17 GMT</pubDate></item><item><title><![CDATA[Reply to Verhalten definiert? on Sun, 27 Mar 2011 13:51:08 GMT]]></title><description><![CDATA[<p>Es ist allerdings möglich, dass er die Prozesstabelle des Betriebssystems um ein Element verkleinert.</p>
<p>Die relevante Stelle im Standard ist übrigens 5.3.5 (2):</p>
<p>ISO/IEC 14882:2003 5.3.5 (2) schrieb:</p>
<blockquote>
<p>In the first alternative (delete object), the value of the operand of delete shall be a pointer to a non-array object or a pointer to a sub-object (1.8) representing a base class of such an object (clause 10). If not, the behavior is undefined.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2040854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2040854</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Sun, 27 Mar 2011 13:51:08 GMT</pubDate></item><item><title><![CDATA[Reply to Verhalten definiert? on Sun, 27 Mar 2011 13:55:33 GMT]]></title><description><![CDATA[<p>Da steht doch eindeutig, dass der Pointer nicht auf einen Array zeigen darf, also geht es nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2040856</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2040856</guid><dc:creator><![CDATA[HighLigerBiMBam]]></dc:creator><pubDate>Sun, 27 Mar 2011 13:55:33 GMT</pubDate></item><item><title><![CDATA[Reply to Verhalten definiert? on Sun, 27 Mar 2011 14:04:18 GMT]]></title><description><![CDATA[<p>Ah, Moment, da hab ich mich vertan - mental einen nicht vorhandenen Halbsatz eingefügt. Das Loch geht noch ein bisschen tiefer.</p>
<p>Also,</p>
<pre><code class="language-cpp">delete &amp;foo[12];
</code></pre>
<p>wird operator delete mit &amp;foo[12] aufrufen (vgl. 5.3.5 (7-8)). Wenn dieser so überladen wurde, dass die Operation unterstützt wird, ist das Verhalten damit definiert. Wird allerdings der Standard-operator delete (18.4.1.1 (9-14)) benutzt, ist das Verhalten deshalb undefiniert, weil dieser nur Zeiger verarbeiten muss, die früher vom Standard-operator new zurückgegeben wurden. Das ist bei &amp;foo[12] nicht der Fall.</p>
<p>Wenn ihr also eine eigene dynamische Speicherverwaltung geschrieben habt, die so etwas kann, ist das Verhalten definiert. Ist das nicht der Fall (und ich nehme an, dass es das nicht ist), ist es undefiniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2040861</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2040861</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Sun, 27 Mar 2011 14:04:18 GMT</pubDate></item></channel></rss>