<?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[Destruktor und delete - Unterschied]]></title><description><![CDATA[<p>Hallo ihr Lieben,</p>
<p>ich habe eine Verständnisfrage.<br />
Angenommen ich habe ein Objekt auf dem Heap erzeugt:</p>
<pre><code>Object obj = new Object;
</code></pre>
<p>wo ist dann genau der Unterschied zwischen</p>
<pre><code>delete obj;
</code></pre>
<p>und einem &quot;reinen&quot; Destruktoraufruf</p>
<pre><code>(*obj).~Object();
</code></pre>
<p>? Ich weiß, dass delete den Destruktor aufruft, aber macht es noch mehr? Oder wären die beiden Ausdrücke im Grunde äquivalent?</p>
<p>Vielen Dank schonmal für jede Hilfe!</p>
<p>Tannenbaum</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/332515/destruktor-und-delete-unterschied</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Apr 2026 23:20:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/332515.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 06 May 2015 06:23:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Destruktor und delete - Unterschied on Wed, 06 May 2015 06:23:45 GMT]]></title><description><![CDATA[<p>Hallo ihr Lieben,</p>
<p>ich habe eine Verständnisfrage.<br />
Angenommen ich habe ein Objekt auf dem Heap erzeugt:</p>
<pre><code>Object obj = new Object;
</code></pre>
<p>wo ist dann genau der Unterschied zwischen</p>
<pre><code>delete obj;
</code></pre>
<p>und einem &quot;reinen&quot; Destruktoraufruf</p>
<pre><code>(*obj).~Object();
</code></pre>
<p>? Ich weiß, dass delete den Destruktor aufruft, aber macht es noch mehr? Oder wären die beiden Ausdrücke im Grunde äquivalent?</p>
<p>Vielen Dank schonmal für jede Hilfe!</p>
<p>Tannenbaum</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2452660</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2452660</guid><dc:creator><![CDATA[Tannenbaum_C++]]></dc:creator><pubDate>Wed, 06 May 2015 06:23:45 GMT</pubDate></item><item><title><![CDATA[Reply to Destruktor und delete - Unterschied on Wed, 06 May 2015 06:27:07 GMT]]></title><description><![CDATA[<p>delete gibt zusätzlich den Speicher frei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2452661</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2452661</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Wed, 06 May 2015 06:27:07 GMT</pubDate></item><item><title><![CDATA[Reply to Destruktor und delete - Unterschied on Wed, 06 May 2015 06:33:50 GMT]]></title><description><![CDATA[<p>Danke für die schnelle Antwort! <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>Im Prinzip ist es doch so, dass der Destruktor dafür verantwortlich ist, alle Attribute, welche auf dem Heap erstellt wurden, freizugeben. Oder?</p>
<p>Wird dann quasi zusätzlicher Speicher für das Objekt selbst allokiert, welcher erst durch delete freigegeben wird? Wenn dem so ist, welche Informationen stehen in diesem zusätzlichen Speicher?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2452662</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2452662</guid><dc:creator><![CDATA[Tannenbaum_C++]]></dc:creator><pubDate>Wed, 06 May 2015 06:33:50 GMT</pubDate></item><item><title><![CDATA[Reply to Destruktor und delete - Unterschied on Wed, 06 May 2015 06:46:08 GMT]]></title><description><![CDATA[<p>Es wird nicht &quot;quasi&quot; &quot;zusätzlicher&quot; Speicher für das Objekt allokiert. Mit new wird Speicher für das Objekt allokiert (Punkt). Mit delete wird dieser wieder freigegeben. In diesem Speicher steht das Objekt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2452663</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2452663</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 06 May 2015 06:46:08 GMT</pubDate></item><item><title><![CDATA[Reply to Destruktor und delete - Unterschied on Wed, 06 May 2015 06:55:11 GMT]]></title><description><![CDATA[<p>Wenn Du das Objekt mit new auf dem Heap anlegst, dann werden auch alle Attribute, Methodenzeiger, ... dort angelegt. delete gibt diesen Speicher wieder frei.</p>
<pre><code>class Punkt
{
   int x;
   int y;
}
</code></pre>
<p>Belegt 8 Byte im Speicher ( wenn int 32Bit belegt )<br />
Die gibt delete wieder frei wenn Du ein solches Objekt mit new erzeugt hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2452664</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2452664</guid><dc:creator><![CDATA[MichelRT]]></dc:creator><pubDate>Wed, 06 May 2015 06:55:11 GMT</pubDate></item><item><title><![CDATA[Reply to Destruktor und delete - Unterschied on Wed, 06 May 2015 07:38:45 GMT]]></title><description><![CDATA[<p>Tannenbaum_C++ schrieb:</p>
<blockquote>
<p>...und einem &quot;reinen&quot; Destruktoraufruf</p>
</blockquote>
<p>Nur so am Rande: Einen Destruktor ruft man in 99,999% der Fälle niemals explizit auf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2452668</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2452668</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 06 May 2015 07:38:45 GMT</pubDate></item><item><title><![CDATA[Reply to Destruktor und delete - Unterschied on Wed, 06 May 2015 08:23:27 GMT]]></title><description><![CDATA[<blockquote>
<p>Nur so am Rande: Einen Destruktor ruft man in 99,999% der Fälle niemals explizit auf.</p>
</blockquote>
<p>Hast Du ein Beispiel, oder einen Verweis auf ein Beispiel, wo es Sinn macht, den Destruktor explizit aufzurufen?</p>
<p>Danke nochmal für die schnellen Antworten!! Ich hab es jetzt verstanden <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/2452674</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2452674</guid><dc:creator><![CDATA[Tannenbaum_C++]]></dc:creator><pubDate>Wed, 06 May 2015 08:23:27 GMT</pubDate></item><item><title><![CDATA[Reply to Destruktor und delete - Unterschied on Wed, 06 May 2015 08:28:41 GMT]]></title><description><![CDATA[<p>Tannenbaum_C++ schrieb:</p>
<blockquote>
<p>Hast Du ein Beispiel, oder einen Verweis auf ein Beispiel, wo es Sinn macht, den Destruktor explizit aufzurufen?</p>
</blockquote>
<p>Vergiss diesen Fall einfach. Ich behaupte das du diesen Sonderfall (eigenes Speichermanagement) niemals benötigst. Ich bin seit etwa 15 Jahren beruflich mit C++ unterwegs, in keiner Anwendung gab es einen solchen Fall.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2452675</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2452675</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 06 May 2015 08:28:41 GMT</pubDate></item><item><title><![CDATA[Reply to Destruktor und delete - Unterschied on Wed, 06 May 2015 08:54:32 GMT]]></title><description><![CDATA[<p>Tannenbaum_C++ schrieb:</p>
<blockquote>
<p>Hast Du ein Beispiel, oder einen Verweis auf ein Beispiel, wo es Sinn macht, den Destruktor explizit aufzurufen?</p>
</blockquote>
<p>Stichwort: placement new</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2452676</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2452676</guid><dc:creator><![CDATA[Biolunar]]></dc:creator><pubDate>Wed, 06 May 2015 08:54:32 GMT</pubDate></item><item><title><![CDATA[Reply to Destruktor und delete - Unterschied on Wed, 06 May 2015 10:53:36 GMT]]></title><description><![CDATA[<p>Biolunar schrieb:</p>
<blockquote>
<p>Tannenbaum_C++ schrieb:</p>
<blockquote>
<p>Hast Du ein Beispiel, oder einen Verweis auf ein Beispiel, wo es Sinn macht, den Destruktor explizit aufzurufen?</p>
</blockquote>
<p>Stichwort: placement new</p>
</blockquote>
<p>Dafür gibt es Placement delete?</p>
<p>Ich meine mich erinnern zu können, dass im Alexandrescu ein Singleton-Fall beschrieben wurde, wobei die Singleton Instanz auch immer mal wieder zerstört werden kann (er nannte das das Phönix Singleton) und dabei wurde ein manueller Destruktoraufruf gebraucht, aber ich bin mir auch nicht sicher. Kann auch wo adners gewesen sein....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2452692</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2452692</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Wed, 06 May 2015 10:53:36 GMT</pubDate></item><item><title><![CDATA[Reply to Destruktor und delete - Unterschied on Wed, 06 May 2015 10:58:02 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>Dafür gibt es Placement delete?</p>
</blockquote>
<p>Es gibt kein placement delete.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2452693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2452693</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 06 May 2015 10:58:02 GMT</pubDate></item><item><title><![CDATA[Reply to Destruktor und delete - Unterschied on Wed, 06 May 2015 12:31:10 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>Dafür gibt es Placement delete?</p>
</blockquote>
<p>Es gibt kein placement delete.</p>
</blockquote>
<p>Oh shit, das äh wusste ich nicht -.-'<br />
Habs auch noch nie gebraucht im Produktionsbetrieb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2452698</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2452698</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Wed, 06 May 2015 12:31:10 GMT</pubDate></item><item><title><![CDATA[Reply to Destruktor und delete - Unterschied on Wed, 06 May 2015 12:36:44 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>Dafür gibt es Placement delete?</p>
</blockquote>
<p>Es gibt kein placement delete.</p>
</blockquote>
<p>Doch, technisch gesehen schon.<br />
Wenn der Konstruktor beim placement new eine Exception wirft, wird placement delete aufgerufen. Für die Version, die einfach nur einen Speicherbereich bekommt und darin den Konstruktor aufruft, ist das no-op, aber man kann ja die placement new Syntax mit beliebigen Argument machen, dann werden sie auch an die entsprechende placement delete Funktion übergeben, die dann evtl. Arbeit macht.<br />
Aber &quot;reines&quot; ploacement delete, im Gegenzug zu placement new gibt es nicht, ja.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2452699</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2452699</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Wed, 06 May 2015 12:36:44 GMT</pubDate></item><item><title><![CDATA[Reply to Destruktor und delete - Unterschied on Wed, 06 May 2015 12:46:09 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>Wenn der Konstruktor beim placement new eine Exception wirft, wird placement delete aufgerufen.</p>
</blockquote>
<p>Wenn der Konstruktor eine Exception wirft, gilt das Objekt doch als nicht erzeugt und es wird lediglich der Speicher freigegeben? Meinst Du operator delete?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2452700</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2452700</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 06 May 2015 12:46:09 GMT</pubDate></item><item><title><![CDATA[Reply to Destruktor und delete - Unterschied on Wed, 06 May 2015 13:05:14 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>Nathan schrieb:</p>
<blockquote>
<p>Wenn der Konstruktor beim placement new eine Exception wirft, wird placement delete aufgerufen.</p>
</blockquote>
<p>Wenn der Konstruktor eine Exception wirft, gilt das Objekt doch als nicht erzeugt und es wird lediglich der Speicher freigegeben? Meinst Du operator delete?</p>
</blockquote>
<p>Richtig und due Speicherfreigabe macht operator plscement delete.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2452701</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2452701</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Wed, 06 May 2015 13:05:14 GMT</pubDate></item><item><title><![CDATA[Reply to Destruktor und delete - Unterschied on Wed, 06 May 2015 18:10:25 GMT]]></title><description><![CDATA[<p>Für die Korinthenkacker (also mich): Der Standard kennt ein placement new, aber kein placement delete. Er kennt aber wohl einen placement operator delete.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2452757</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2452757</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 06 May 2015 18:10:25 GMT</pubDate></item></channel></rss>