<?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[Speicherverwaltung in C++]]></title><description><![CDATA[<p>Hallo zusammen</p>
<p>Ich hab ja von dem RAII-Konzept gehört und mir ist auch klar wie das funktioniert.<br />
Aber trotzdem fordern man ja auch schonmal Objekte in ner Methode an.<br />
Was mach ich denn, wenn ich in einer Methode ein Objekt erstelle?<br />
Gibt man dann immer einen auto_ptr zurück oder sollte man sowas auch vermeiden?<br />
Oder lieber das Objekt auf dem Stack anlegen und den Copy-Konstruktor in Anspruch nehmen?</p>
<p>Jetzt aber noch ne andere theoretische Frage:<br />
Mal Angenommen ich hab ne Klasse die liefert ein MyClass* zurück.<br />
Das Objekt muss nicht gelöscht werden (wie man auch nicht erwarten würde)<br />
Jetzt überschreibe ich in einer abgeleiteten Klasse die Methode.<br />
Hier muss ich aber aus irgendwelchen Gründen ein neues Objekt zurückliefern.<br />
Hab ich da in C++ dann verloren oder gibt es da auch noch irgendeinen Trick?</p>
<p>Gruß,<br />
*Cpp-Anfänger*</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/166514/speicherverwaltung-in-c</link><generator>RSS for Node</generator><lastBuildDate>Tue, 15 Sep 2026 11:49:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/166514.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 30 Nov 2006 00:57:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Speicherverwaltung in C++ on Thu, 30 Nov 2006 00:57:44 GMT]]></title><description><![CDATA[<p>Hallo zusammen</p>
<p>Ich hab ja von dem RAII-Konzept gehört und mir ist auch klar wie das funktioniert.<br />
Aber trotzdem fordern man ja auch schonmal Objekte in ner Methode an.<br />
Was mach ich denn, wenn ich in einer Methode ein Objekt erstelle?<br />
Gibt man dann immer einen auto_ptr zurück oder sollte man sowas auch vermeiden?<br />
Oder lieber das Objekt auf dem Stack anlegen und den Copy-Konstruktor in Anspruch nehmen?</p>
<p>Jetzt aber noch ne andere theoretische Frage:<br />
Mal Angenommen ich hab ne Klasse die liefert ein MyClass* zurück.<br />
Das Objekt muss nicht gelöscht werden (wie man auch nicht erwarten würde)<br />
Jetzt überschreibe ich in einer abgeleiteten Klasse die Methode.<br />
Hier muss ich aber aus irgendwelchen Gründen ein neues Objekt zurückliefern.<br />
Hab ich da in C++ dann verloren oder gibt es da auch noch irgendeinen Trick?</p>
<p>Gruß,<br />
*Cpp-Anfänger*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1184160</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1184160</guid><dc:creator><![CDATA[*Cpp-Anfänger* 0]]></dc:creator><pubDate>Thu, 30 Nov 2006 00:57:44 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherverwaltung in C++ on Thu, 30 Nov 2006 08:43:35 GMT]]></title><description><![CDATA[<p><em>Cpp-Anfänger</em> schrieb:</p>
<blockquote>
<p>Ich hab ja von dem RAII-Konzept gehört und mir ist auch klar wie das funktioniert.<br />
Aber trotzdem fordern man ja auch schonmal Objekte in ner Methode an.<br />
Was mach ich denn, wenn ich in einer Methode ein Objekt erstelle?<br />
Gibt man dann immer einen auto_ptr zurück oder sollte man sowas auch vermeiden?<br />
Oder lieber das Objekt auf dem Stack anlegen und den Copy-Konstruktor in Anspruch nehmen?</p>
</blockquote>
<p>auto_ptr ist zwar mitunter recht nützlich, aber nicht gerade das Idealbild eines Smart-Pointers - da dürften in vielen Fällen die Boost Pointerklassen (z.B. shared_ptr) besser ins Konzept passen.<br />
Ansonsten: Bei kleinen Objekten gehe ich lieber über eine Rückgabe per Wert, bei größeren Objekten suche ich meist nach Alternativen (z.B. eine const-Referenz auf ein bereits existierendes Objekt), um Kopier-Operationen zu minimieren.</p>
<blockquote>
<p>Jetzt aber noch ne andere theoretische Frage:<br />
Mal Angenommen ich hab ne Klasse die liefert ein MyClass* zurück.<br />
Das Objekt muss nicht gelöscht werden (wie man auch nicht erwarten würde)<br />
Jetzt überschreibe ich in einer abgeleiteten Klasse die Methode.<br />
Hier muss ich aber aus irgendwelchen Gründen ein neues Objekt zurückliefern.<br />
Hab ich da in C++ dann verloren oder gibt es da auch noch irgendeinen Trick?</p>
</blockquote>
<p>Dann solltest du dich darum kümmern, daß dieses neue Objekt auch nicht gelöscht werden muß <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="😉"
    /><br />
(aber ehrlich gesagt verstehe ich nicht ganz, worauf du mit diesem Szenario hinauswillst)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1184262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1184262</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 30 Nov 2006 08:43:35 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherverwaltung in C++ on Thu, 30 Nov 2006 13:46:54 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>auto_ptr ist zwar mitunter recht nützlich, aber nicht gerade das Idealbild eines Smart-Pointers - da dürften in vielen Fällen die Boost Pointerklassen (z.B. shared_ptr) besser ins Konzept passen.</p>
</blockquote>
<p>War der Hinweis auf die Boost-Pointer-Klassen hier eine allgemeine Anmerkung<br />
oder würdest du hier in bestimmten Fällen einen verwenden?<br />
Wenn ja, wann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1184535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1184535</guid><dc:creator><![CDATA[*Cpp-Anfänger* 0]]></dc:creator><pubDate>Thu, 30 Nov 2006 13:46:54 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherverwaltung in C++ on Thu, 30 Nov 2006 13:48:55 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p><a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-134971.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-134971.html</a></p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1184539</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1184539</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 30 Nov 2006 13:48:55 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherverwaltung in C++ on Thu, 30 Nov 2006 17:33:13 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>auto_ptr ist zwar mitunter recht nützlich, aber nicht gerade das Idealbild eines Smart-Pointers</p>
</blockquote>
<p>Wieso? Sofern destructive copy semantics ausreichen, was bei Rückgabewerten aus Funktionen ja oftmals der Fall ist, ist auto_ptr doch ideal. Mehr braucht man dann auch nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1184765</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1184765</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Thu, 30 Nov 2006 17:33:13 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherverwaltung in C++ on Fri, 01 Dec 2006 01:36:23 GMT]]></title><description><![CDATA[<p>Ich versteh den Sinn von boost::scoped_ptr&lt;T&gt; nicht so ganz...<br />
Das kann doch der auto_ptr auch, oder seh ich das falsch?<br />
Oder ist boost::scoped_ptr&lt;T&gt; einfach performanter?</p>
<blockquote>
<p>scoped_ptr verbietet die bei auto_ptr mögliche Zuweisung (die einen u.U. gefährlichen, weil versteckten Transfer of Ownership bedeutet)</p>
</blockquote>
<p>Oder ist dieser Grund der Einzige?</p>
<p>Gruß,<br />
*Cpp-Anfänger*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1185006</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1185006</guid><dc:creator><![CDATA[*Cpp-Anfänger* 0]]></dc:creator><pubDate>Fri, 01 Dec 2006 01:36:23 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherverwaltung in C++ on Fri, 01 Dec 2006 07:13:30 GMT]]></title><description><![CDATA[<p>scoped_ptr gibt nie das Eigentum ab, auto_ptr schon (und das sogar, ohne dich darüber zu informieren). Und wenn du Pech hast, zerlegst du dir damit Objekte, die du noch brauchst:</p>
<pre><code class="language-cpp">void print_out(auto_ptr&lt;Typ&gt; pdata)
{
  cout&lt;&lt;*pdata;
}
/* Unerwünschter Nebeneffekt:
pdata übernimmt das Eigentum von seinem Argument und löscht im Destruktor das
Objekt, auf das er zeigt.*/
</code></pre>
<p>Mit anderen Smart-Pointern wäre das nicht passiert (scoped_ptr hätte sich gar nicht compilieren lassen und shared_ptr erzeugt eine korrekte Semantik)</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/2813">@Groovemaster</a>: Wichtig ist das &quot;solange&quot; <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="😉"
    /> Sobald die destruktive Copy-Semantik dir nicht mehr reicht, kannst du auto_ptr in die Tonne treten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1185032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1185032</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 01 Dec 2006 07:13:30 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherverwaltung in C++ on Fri, 01 Dec 2006 07:34:55 GMT]]></title><description><![CDATA[<p>CStoll! Aber bei dir hört sich das so an, als ob es was schlechtes wäre, das auto_ptr immer nur einen Besitzer haben kann? Warum? Es ist schliesslich der Sinn von auto_ptr! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> &quot;by design&quot; nennt man sowas. scoped_ptr hat ein anderen dienlichen Zweck, mehr nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1185044</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1185044</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Fri, 01 Dec 2006 07:34:55 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherverwaltung in C++ on Fri, 01 Dec 2006 07:43:28 GMT]]></title><description><![CDATA[<p>Artchi schrieb:</p>
<blockquote>
<p>CStoll! Aber bei dir hört sich das so an, als ob es was schlechtes wäre, das auto_ptr immer nur einen Besitzer haben kann?</p>
</blockquote>
<p>Sorry, wenn das falsch rüberkam. Ich hab' nichts gegen das Konzept hinter dem auto_ptr&lt;&gt; - ich hab' nur etwas dagegen, daß manche Leute ihn als Universal-Heilmittel für alle Pointer-Probleme ansehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1185053</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1185053</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 01 Dec 2006 07:43:28 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherverwaltung in C++ on Fri, 01 Dec 2006 11:21:00 GMT]]></title><description><![CDATA[<p>Dass man einem auto_pointer nicht das Objekt klaut ist doch klar, oder?<br />
Das ist ja so, als löscht man ein Objekt das man übergeben kriegt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1185211</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1185211</guid><dc:creator><![CDATA[*Cpp-Anfänger* 0]]></dc:creator><pubDate>Fri, 01 Dec 2006 11:21:00 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherverwaltung in C++ on Fri, 01 Dec 2006 11:57:41 GMT]]></title><description><![CDATA[<p><em>Cpp-Anfänger</em> schrieb:</p>
<blockquote>
<p>Dass man einem auto_pointer nicht das Objekt klaut ist doch klar, oder?</p>
</blockquote>
<p>Zumindest SOLLTE es klar sein <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="😉"
    /><br />
Nur leider passiert es viel zu leicht, daß man es unbeabsichtigt doch macht - und der Compiler hat idR kein Problem damit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1185239</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1185239</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 01 Dec 2006 11:57:41 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherverwaltung in C++ on Fri, 01 Dec 2006 19:31:52 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/2813">@Groovemaster</a>: Wichtig ist das &quot;solange&quot; <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="😉"
    /> Sobald die destruktive Copy-Semantik dir nicht mehr reicht, kannst du auto_ptr in die Tonne treten.</p>
</blockquote>
<p>Schon klar. Es gibt ja auch nicht DEN Smart Pointer, sondern Verschiedene für den jeweils benötigten Zweck. Nur hörte es sich so an, als ob es weitaus bessere Smart Pointer als auto_ptr gibt. Für den Zweck, für den auto_ptr konzipiert ist, ist er aber vollkommen iO. Zudem hat er gegenüber boost::scoped_ptr keinerlei Overhead. Der entsteht ja erst beim Kopieren, was boost::scoped_ptr nicht unterstützt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1185523</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1185523</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Fri, 01 Dec 2006 19:31:52 GMT</pubDate></item></channel></rss>