<?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[new&#x2F;delete]]></title><description><![CDATA[<p>hi</p>
<p>Ich hab eine Frage zu dynamischer Speicherverwaltung mit new und delete.<br />
Wenn ich eine Klasse habe und mehrere davon abgeleitete Klassen,<br />
und ich ein Objekt der Klasse als &quot;Container&quot; benutzen möchte (sprich den Speicherbereich zur Laufzeit wechseln möchte),<br />
kann ich ja mit delete nur den Speicherbereich freigeben den ich als letztes benutzt habe.<br />
Beispiel:</p>
<p>class A{<br />
...};</p>
<p>class B: public A{<br />
...};<br />
class C: public A{<br />
...};</p>
<p>main(){<br />
A *a=NULL;<br />
a=new B;<br />
a=new C;<br />
delete a;<br />
}</p>
<p>Und der Zeiger a wird automatisch vom Destruktor von der Klasse A freigegeben.<br />
der Speicherbereich von B ist doch dann aber eine Speicherleiche.<br />
Wie kann ich den zur Laufzeit freigeben, ohne delete zu verwenden und gleich das Objekt zu löschen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/164444/new-delete</link><generator>RSS for Node</generator><lastBuildDate>Sun, 13 Sep 2026 21:56:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/164444.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 08 Nov 2006 11:47:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to new&#x2F;delete on Wed, 08 Nov 2006 11:47:53 GMT]]></title><description><![CDATA[<p>hi</p>
<p>Ich hab eine Frage zu dynamischer Speicherverwaltung mit new und delete.<br />
Wenn ich eine Klasse habe und mehrere davon abgeleitete Klassen,<br />
und ich ein Objekt der Klasse als &quot;Container&quot; benutzen möchte (sprich den Speicherbereich zur Laufzeit wechseln möchte),<br />
kann ich ja mit delete nur den Speicherbereich freigeben den ich als letztes benutzt habe.<br />
Beispiel:</p>
<p>class A{<br />
...};</p>
<p>class B: public A{<br />
...};<br />
class C: public A{<br />
...};</p>
<p>main(){<br />
A *a=NULL;<br />
a=new B;<br />
a=new C;<br />
delete a;<br />
}</p>
<p>Und der Zeiger a wird automatisch vom Destruktor von der Klasse A freigegeben.<br />
der Speicherbereich von B ist doch dann aber eine Speicherleiche.<br />
Wie kann ich den zur Laufzeit freigeben, ohne delete zu verwenden und gleich das Objekt zu löschen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1171034</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1171034</guid><dc:creator><![CDATA[opengl_noob]]></dc:creator><pubDate>Wed, 08 Nov 2006 11:47:53 GMT</pubDate></item><item><title><![CDATA[Reply to new&#x2F;delete on Wed, 08 Nov 2006 11:50:05 GMT]]></title><description><![CDATA[<p>vielleicht hilft dir ein virtueller destruktor...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1171038</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1171038</guid><dc:creator><![CDATA[ser1al_ausgeloggt]]></dc:creator><pubDate>Wed, 08 Nov 2006 11:50:05 GMT</pubDate></item><item><title><![CDATA[Reply to new&#x2F;delete on Wed, 08 Nov 2006 11:54:20 GMT]]></title><description><![CDATA[<p>Außerdem solltest du den bisherigen Speicher auch freigeben, bevor du deinen Zeiger verbiegst (nach dem &quot;a=new C;&quot; hast du keine Möglichkeit mehr, auf das vorher angelegte B-Objekt zuzugreifen).</p>
<p>(besser noch: Du verwendest Smart-Pointer, die kümmern sich selber darum, an der richtigen Stelle delete aufzurufen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1171040</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1171040</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 08 Nov 2006 11:54:20 GMT</pubDate></item><item><title><![CDATA[Reply to new&#x2F;delete on Wed, 08 Nov 2006 11:55:33 GMT]]></title><description><![CDATA[<p>Zu jedem new gehört ein delete. Das kannst du dir nicht ersparen. Du willst einfach die Regel brechen/umgehen.</p>
<p>Wenn du dir ein delete sparen willst, dann benutze Smartpointer, die zerstören sich autom. wenn sie nicht mehr gebraucht werden.</p>
<p>Es gibt std::tr1::shared_ptr welcher in den meisten Fällen ausreichend ist. Wenn du kein tr1 hast, kannst du auch Boost herunter laden und dort boost::shared_ptr verwenden. Dann sparst du dir ein delete.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1171042</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1171042</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Wed, 08 Nov 2006 11:55:33 GMT</pubDate></item></channel></rss>