<?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[verständnissfrage zu delete]]></title><description><![CDATA[<p>hi<br />
ich habe ein paar fragen zu delete:<br />
1.</p>
<pre><code class="language-cpp">void *a=new vector&lt;int&gt;;
delete a;
</code></pre>
<p>wird hier der ganze vector gelöscht?<br />
wenn ja wird der destruktor des vektors aufgerufen?</p>
<ol start="2">
<li></li>
</ol>
<pre><code class="language-cpp">void *a=new vector&lt;int&gt;;
vector&lt;int&gt; *delp=(vector&lt;int&gt; *) a;
delete delp;
</code></pre>
<p>wird hier der ganze vector gelöscht?<br />
wenn ja wird der destruktor des vektors aufgerufen?</p>
<p>schonmal danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/270164/verständnissfrage-zu-delete</link><generator>RSS for Node</generator><lastBuildDate>Sun, 30 Aug 2026 13:02:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/270164.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 07 Jul 2010 15:08:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to verständnissfrage zu delete on Wed, 07 Jul 2010 15:08:43 GMT]]></title><description><![CDATA[<p>hi<br />
ich habe ein paar fragen zu delete:<br />
1.</p>
<pre><code class="language-cpp">void *a=new vector&lt;int&gt;;
delete a;
</code></pre>
<p>wird hier der ganze vector gelöscht?<br />
wenn ja wird der destruktor des vektors aufgerufen?</p>
<ol start="2">
<li></li>
</ol>
<pre><code class="language-cpp">void *a=new vector&lt;int&gt;;
vector&lt;int&gt; *delp=(vector&lt;int&gt; *) a;
delete delp;
</code></pre>
<p>wird hier der ganze vector gelöscht?<br />
wenn ja wird der destruktor des vektors aufgerufen?</p>
<p>schonmal danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1922794</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1922794</guid><dc:creator><![CDATA[Barcode]]></dc:creator><pubDate>Wed, 07 Jul 2010 15:08:43 GMT</pubDate></item><item><title><![CDATA[Reply to verständnissfrage zu delete on Wed, 07 Jul 2010 15:15:44 GMT]]></title><description><![CDATA[<p>1. undefiniertes Verhalten<br />
2. ja, ja</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1922798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1922798</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Wed, 07 Jul 2010 15:15:44 GMT</pubDate></item><item><title><![CDATA[Reply to verständnissfrage zu delete on Wed, 07 Jul 2010 15:16:54 GMT]]></title><description><![CDATA[<p>Barcode schrieb:</p>
<blockquote>
<p>hi</p>
<pre><code class="language-cpp">void *a=new vector&lt;int&gt;;
delete a;
</code></pre>
<p>wird hier der ganze vector gelöscht?<br />
wenn ja wird der destruktor des vektors aufgerufen?</p>
</blockquote>
<p>1. Nein<br />
2. erübrigt sich</p>
<blockquote>
<pre><code class="language-cpp">void *a=new vector&lt;int&gt;;
vector&lt;int&gt; *delp=(vector&lt;int&gt; *) a;
delete delp;
</code></pre>
<p>wird hier der ganze vector gelöscht?<br />
wenn ja wird der destruktor des vektors aufgerufen?</p>
</blockquote>
<p>1. Ja<br />
2. Ja, sonst würde am Ende was vom Vector übrig bleiben (der allozierte Speicher)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1922799</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1922799</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Wed, 07 Jul 2010 15:16:54 GMT</pubDate></item><item><title><![CDATA[Reply to verständnissfrage zu delete on Wed, 07 Jul 2010 15:17:17 GMT]]></title><description><![CDATA[<p>Probier sowas doch selbst aus. Ob die Klasse <code>vector&lt;int&gt;</code> oder <code>foo</code> heißt, ist ja egal.</p>
<pre><code class="language-cpp">struct foo
{
	~foo()
	{
		cout &lt;&lt; &quot;Destruktor&quot; &lt;&lt; endl;
	}
};

int main()
{
	void *p1 = new foo;
	delete p1;

	cout &lt;&lt; &quot;p1 freigegeben&quot; &lt;&lt; endl;

	void *p2 = new foo;
	foo *p2_foo = static_cast&lt;foo*&gt;(p2);
	delete p2_foo;

	cout &lt;&lt; &quot;p2 freigegeben&quot; &lt;&lt; endl;
}
</code></pre>
<p>Ausgabe:</p>
<pre><code>p1 freigegeben
Destruktor
p2 freigegeben
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1922801</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1922801</guid><dc:creator><![CDATA[ipsec]]></dc:creator><pubDate>Wed, 07 Jul 2010 15:17:17 GMT</pubDate></item><item><title><![CDATA[Reply to verständnissfrage zu delete on Wed, 07 Jul 2010 15:20:19 GMT]]></title><description><![CDATA[<p>ok danke an alle</p>
<p>@ ipsec<br />
.....stimmt hast recht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1922808</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1922808</guid><dc:creator><![CDATA[Barcode]]></dc:creator><pubDate>Wed, 07 Jul 2010 15:20:19 GMT</pubDate></item><item><title><![CDATA[Reply to verständnissfrage zu delete on Thu, 08 Jul 2010 07:59:56 GMT]]></title><description><![CDATA[<p>Im yweiten Beispiel hast du Yeiger im Vector. Diese Yeiger werden nicht automatisch freigegeben. Das mußt du selber vor dem clear/dtor Aufruf machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1923106</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1923106</guid><dc:creator><![CDATA[Tyrdal]]></dc:creator><pubDate>Thu, 08 Jul 2010 07:59:56 GMT</pubDate></item><item><title><![CDATA[Reply to verständnissfrage zu delete on Thu, 08 Jul 2010 08:03:35 GMT]]></title><description><![CDATA[<p>ipsec schrieb:</p>
<blockquote>
<p>Probier sowas doch selbst aus.</p>
</blockquote>
<p>Wenn an allen Ecken und Enden der Programmiersprache undefiniertes Verhalten lauert, ist Ausprobieren keine gute Idee.<br />
Sobald man in den Bereich des undefinierten Verhaltens kommt, sind durch Ausprobieren gewonnene Erkenntnisse im besten Fall nutzlos.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1923109</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1923109</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Thu, 08 Jul 2010 08:03:35 GMT</pubDate></item><item><title><![CDATA[Reply to verständnissfrage zu delete on Thu, 08 Jul 2010 08:04:10 GMT]]></title><description><![CDATA[<blockquote>
<p>Probier sowas doch selbst aus. Ob die Klasse vector&lt;int&gt; oder foo heißt, ist ja egal</p>
</blockquote>
<p>Wobei &quot;ausprobieren&quot; nicht reicht. Nur weil etwas geht, weils die aktuelle Implementation gerade so macht, heisst noch lange nicht, dass es vom C++ Standard her ok ist.</p>
<p>Also: Ausprobieren ist gut, im Standard nachlesen noch besser...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1923110</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1923110</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Thu, 08 Jul 2010 08:04:10 GMT</pubDate></item><item><title><![CDATA[Reply to verständnissfrage zu delete on Thu, 08 Jul 2010 08:10:58 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>1. undefiniertes Verhalten</p>
</blockquote>
<p>Wieso zeigt das 1. Beispiel undefiniertes Verhalten?<br />
Der delete-Operator nimmt einen void* als Parameter. Oder sehe ich da was falsch?</p>
<p>Hättest du vielleicht einen Artikel, wo ich mir das durchlesen könnte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1923117</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1923117</guid><dc:creator><![CDATA[ÄhhhWTF?!]]></dc:creator><pubDate>Thu, 08 Jul 2010 08:10:58 GMT</pubDate></item><item><title><![CDATA[Reply to verständnissfrage zu delete on Thu, 08 Jul 2010 08:23:38 GMT]]></title><description><![CDATA[<p>Das kannst du direkt im Standard unter 5.3.5§3 nachlesen, oder auch in der daranhängenden Fußnote:</p>
<blockquote>
<p>This implies that an object cannot be deleted using a pointer of type void* because there are no objects of type void.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1923120</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1923120</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Thu, 08 Jul 2010 08:23:38 GMT</pubDate></item><item><title><![CDATA[Reply to verständnissfrage zu delete on Thu, 08 Jul 2010 09:45:50 GMT]]></title><description><![CDATA[<p>ÄhhhWTF?! schrieb:</p>
<blockquote>
<p>Wieso zeigt das 1. Beispiel undefiniertes Verhalten?<br />
Der delete-Operator nimmt einen void* als Parameter. Oder sehe ich da was falsch?</p>
</blockquote>
<p>Du mußt unterscheiden zwischen der Funktion</p>
<pre><code class="language-cpp">void operator delete(void*)
</code></pre>
<p>, die Du schreiben kannst und damit das Speichermanegement implemenmtierst,</p>
<p>und dem, was bei</p>
<pre><code class="language-cpp">delete x;
</code></pre>
<p>tatsächlich erzeugt wird, nämlich</p>
<pre><code class="language-cpp">x.~X();//Destruktor aufrufen
operator delete((void*)x);//Danach erst den Speicher weghauen
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1923158</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1923158</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 08 Jul 2010 09:45:50 GMT</pubDate></item><item><title><![CDATA[Reply to verständnissfrage zu delete on Thu, 08 Jul 2010 09:54:02 GMT]]></title><description><![CDATA[<p>hey volkard,</p>
<p>korrigier mich bitte falls ich falsch liege.</p>
<p>das heißt wenn ich</p>
<pre><code class="language-cpp">void* ptr = new myClass;
</code></pre>
<p>schreibe und das objekt mittels delete lösche</p>
<pre><code class="language-cpp">delete ptr;
</code></pre>
<p>weiß der Compiler nicht welchen Desktruktor er aufrufen soll. Und versucht sowas zu generieren.</p>
<pre><code class="language-cpp">ptr.~void(); // Klasse void existiert nicht -&gt; Compilerfehler
operator delete((void*)ptr);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1923164</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1923164</guid><dc:creator><![CDATA[ÄhhhWTF?!]]></dc:creator><pubDate>Thu, 08 Jul 2010 09:54:02 GMT</pubDate></item><item><title><![CDATA[Reply to verständnissfrage zu delete on Thu, 08 Jul 2010 11:18:11 GMT]]></title><description><![CDATA[<blockquote>
<p>&gt; x.~X();//Destruktor aufrufen</p>
</blockquote>
<p>Er meint natürlich x-&gt;~X(); Denn das hat zur Folge: (*x).~X(); ---&gt; Dereferenzieren von void* ist ungültig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1923210</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1923210</guid><dc:creator><![CDATA[Ad aCTa]]></dc:creator><pubDate>Thu, 08 Jul 2010 11:18:11 GMT</pubDate></item></channel></rss>