<?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[Was passiert bei delete[] ?]]></title><description><![CDATA[<p>Wieso diese komische Frage?</p>
<p>Folgendes:</p>
<pre><code class="language-cpp">void blub()
{
  float matrix[16];

  foo(matrix);
}

void foo(float* matrix)
{
  float* dummi = new float[16];

  //tuheirgendwas

  delete[] matrix;
  matrix = dummi;
}
</code></pre>
<p>Der Kompiler meckert nicht. Das Programm läuft. Doch wenn ich mit dem Debugger (GDB) durchlaufe, hängt der sich an der delete[] stelle auf. Vermutlich, weil ich speicher freigebe, der nicht mit new allociert wurde.<br />
Aber wieso läuft dann das Programm?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/137373/was-passiert-bei-delete</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 18:39:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/137373.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 16 Feb 2006 21:32:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Was passiert bei delete[] ? on Thu, 16 Feb 2006 21:32:42 GMT]]></title><description><![CDATA[<p>Wieso diese komische Frage?</p>
<p>Folgendes:</p>
<pre><code class="language-cpp">void blub()
{
  float matrix[16];

  foo(matrix);
}

void foo(float* matrix)
{
  float* dummi = new float[16];

  //tuheirgendwas

  delete[] matrix;
  matrix = dummi;
}
</code></pre>
<p>Der Kompiler meckert nicht. Das Programm läuft. Doch wenn ich mit dem Debugger (GDB) durchlaufe, hängt der sich an der delete[] stelle auf. Vermutlich, weil ich speicher freigebe, der nicht mit new allociert wurde.<br />
Aber wieso läuft dann das Programm?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/996266</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/996266</guid><dc:creator><![CDATA[Anfänger06]]></dc:creator><pubDate>Thu, 16 Feb 2006 21:32:42 GMT</pubDate></item><item><title><![CDATA[Reply to Was passiert bei delete[] ? on Thu, 16 Feb 2006 21:42:13 GMT]]></title><description><![CDATA[<p>Undefiniertes Verhalten ist halt undefiniert. Da ist alles vom einbahnfreien Laufen des Programs bis zur Explosion des Rechner möglich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/996274</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/996274</guid><dc:creator><![CDATA[Ben04]]></dc:creator><pubDate>Thu, 16 Feb 2006 21:42:13 GMT</pubDate></item><item><title><![CDATA[Reply to Was passiert bei delete[] ? on Fri, 17 Feb 2006 07:54:51 GMT]]></title><description><![CDATA[<p>Anfänger06 schrieb:</p>
<blockquote>
<p>Aber wieso läuft dann das Programm?</p>
</blockquote>
<p>Wie soll der Compiler feststellen können, ob der Zeiger matrix, der in Foo reingegeben wird, mit new allokiert wurde oder vielleicht auf ein statisches Array zeigt? Innerhalb einer Übersetzungseinheit wäre das ja rein theoretisch im Rahmen des Machbaren, hier eine Warnmeldung auszugeben. Spätestens wenn die Aufrufe aus verschiedenen UEs kommen, ist es dem Compiler absolut unmöglich, hier undefiniertes Verhalten festzustellen. Die Verantwortung für den Speicher liegt nunmal bei dir. <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/996393</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/996393</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Fri, 17 Feb 2006 07:54:51 GMT</pubDate></item></channel></rss>