<?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[Speicher Freigeben, obwohl Program endet?]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ist es nötig, dass ich den Speicher, den ich auf dem Heap angefragt habe freigebe, bevor ich mein Program mit return 0; beende?</p>
<p>Da das Program sowieso gleich beendet wird, wird der Speicher doch automatisch freigegeben, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/257093/speicher-freigeben-obwohl-program-endet</link><generator>RSS for Node</generator><lastBuildDate>Thu, 10 Sep 2026 15:14:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/257093.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 22 Dec 2009 17:36:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Speicher Freigeben, obwohl Program endet? on Tue, 22 Dec 2009 17:36:36 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ist es nötig, dass ich den Speicher, den ich auf dem Heap angefragt habe freigebe, bevor ich mein Program mit return 0; beende?</p>
<p>Da das Program sowieso gleich beendet wird, wird der Speicher doch automatisch freigegeben, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826497</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826497</guid><dc:creator><![CDATA[Samyboy]]></dc:creator><pubDate>Tue, 22 Dec 2009 17:36:36 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher Freigeben, obwohl Program endet? on Tue, 22 Dec 2009 17:40:36 GMT]]></title><description><![CDATA[<p>Ja. Das solltest du grundsätzlich immer tun.</p>
<p>(Es gibt Ausnahmen, aber die sind eher selten und wenn du so eine brauchst, dann weisst du das, ansonsten: Gib deinen Speicher immer frei!)</p>
<p>Auch wenn das Betriebssystem dir den Speicher überlicherweise wieder frei gibt, ist das schlechter Stil, weil das nicht auf jedem System so sein muss (ist ja nicht vom Standard vorgeschrieben, dass angeforderter Speicher vom OS freigegeben werden muss, wenn das Programm endet).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826501</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826501</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 22 Dec 2009 17:40:36 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher Freigeben, obwohl Program endet? on Tue, 22 Dec 2009 17:49:07 GMT]]></title><description><![CDATA[<p>Okay dankeschön!</p>
<p>Kann ich das ganze auch so machen?</p>
<pre><code class="language-cpp">class blabla {
  ~blabla() {
    delete this;
  }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1826504</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826504</guid><dc:creator><![CDATA[Samyboy]]></dc:creator><pubDate>Tue, 22 Dec 2009 17:49:07 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher Freigeben, obwohl Program endet? on Tue, 22 Dec 2009 18:10:30 GMT]]></title><description><![CDATA[<p>Sowas kann in gewissen Fällen nützlich sein, aber würde ich dir jetzt so nicht raten. Überleg dir mal was passiert, wenn du dein Objekt nicht per new anforderst, sondern automatisch anlegst? Also wenn du das hier machst:</p>
<pre><code class="language-cpp">{
blabla b;
} //hups, jetzt crashts!
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1826520</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826520</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 22 Dec 2009 18:10:30 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher Freigeben, obwohl Program endet? on Tue, 22 Dec 2009 18:15:49 GMT]]></title><description><![CDATA[<p>Samyboy schrieb:</p>
<blockquote>
<p>Kann ich das ganze auch so machen?</p>
<pre><code class="language-cpp">class blabla {
  ~blabla() {
    delete this;
  }
};
</code></pre>
</blockquote>
<p>Was bezweckst Du damit? Ich gehe mal davon aus, dass Du keine Endlosschleife haben willst, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826524</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826524</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Tue, 22 Dec 2009 18:15:49 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher Freigeben, obwohl Program endet? on Tue, 22 Dec 2009 18:18:57 GMT]]></title><description><![CDATA[<p>Naja, bei einem Fehler in meinem Program beende ich es mit:</p>
<p>return 1</p>
<p>und sonst halt ganz am Schluss von main() { mit return 0.</p>
<p>Und anstatt ein delete blabla; 5-10 Mal zu schreiben, tu ich das ganze halt in den Destruktor :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826527</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826527</guid><dc:creator><![CDATA[Samyboy]]></dc:creator><pubDate>Tue, 22 Dec 2009 18:18:57 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher Freigeben, obwohl Program endet? on Tue, 22 Dec 2009 18:22:13 GMT]]></title><description><![CDATA[<p>Nein, sorry. Das delete this ist an dieser Stelle völliger Unsinn.</p>
<p>Überleg dir dazu was delete this macht.. Was ruft es auf? Genau den Destruktor des Objektes. Und was passiert in deinem Falle da? Genau es ruft wieder delete this auf. usw. das ist genau genommen keine Schleife, sondern ein Endloser rekursiver Aufruf. Eigentlich das hier:</p>
<pre><code class="language-cpp">void foo ()
{
 foo ();
}
</code></pre>
<p>Das endet mit einem Stack Overflow.</p>
<p>delete this kann in Situationen innerhalb von z.B einer destroy Methode oder so Sinn machen, aber im Destruktor ist es völlig deplaziert.</p>
<p>Wenn du kein delete schreiben möchtest, dann solltest du dir Smart Pointer anschauen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826529</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826529</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 22 Dec 2009 18:22:13 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher Freigeben, obwohl Program endet? on Tue, 22 Dec 2009 18:25:01 GMT]]></title><description><![CDATA[<p>Ahh jetzt versteh ich es erst <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826530</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826530</guid><dc:creator><![CDATA[Samyboy]]></dc:creator><pubDate>Tue, 22 Dec 2009 18:25:01 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher Freigeben, obwohl Program endet? on Tue, 22 Dec 2009 18:34:51 GMT]]></title><description><![CDATA[<p>Normalerweise sollte man sauber aufräumen und normalerweise geschieht das sowieso automatisch bei vernünftigem Einsatz von automatischen Objekten und Smartpointern.<br />
Zuweilen kann es aber sinnvoll zu sein, darauf zu achten, dass am Programmende möglichst wenig freigegeben wird. Ich hab hier z.B. einen Server, der Millionen kleine und größere Datenstrukturen im Speicher hat. Wenn das sauber am Ende wieder aufgeräumt wird, dauert es ewig. Für jedes Objekt wird da der Destruktor aufgerufen, der dann veranlasst, dass sich das Objekt aus irgendwelchen Listen austrägt usw. Dabei möchte man doch nur, dass sich der Server bitte schön nach dem Rausschreiben von ausstehenden Datenbankupdates u.ä. verabschiedet, damit man ihn neustarten kann. Da sollte man also darauf achten, dass man z.B. getInstance bei Singletons nicht etwa durch static Bla instance; implementiert, sondern Objekte mit new anlegt, damit sie am Programmende nicht automatisch zerstört werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826533</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826533</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Tue, 22 Dec 2009 18:34:51 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher Freigeben, obwohl Program endet? on Tue, 22 Dec 2009 18:42:07 GMT]]></title><description><![CDATA[<p>Athar schrieb:</p>
<blockquote>
<p>Zuweilen kann es aber sinnvoll zu sein, darauf zu achten, dass am Programmende möglichst wenig freigegeben wird. Ich hab hier z.B. einen Server, der Millionen kleine und größere Datenstrukturen im Speicher hat. Wenn das sauber am Ende wieder aufgeräumt wird, dauert es ewig. Für jedes Objekt wird da der Destruktor aufgerufen, der dann veranlasst, dass sich das Objekt aus irgendwelchen Listen austrägt usw. Dabei möchte man doch nur, dass sich der Server bitte schön nach dem Rausschreiben von ausstehenden Datenbankupdates u.ä. verabschiedet, damit man ihn neustarten kann. Da sollte man also darauf achten, dass man z.B. getInstance bei Singletons nicht etwa durch static Bla instance; implementiert, sondern Objekte mit new anlegt, damit sie am Programmende nicht automatisch zerstört werden.</p>
</blockquote>
<p>Interessanter Ansatz. Wäre etwas, was ich einen kontrollierten Absturz nennen würde. <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/1826535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826535</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 22 Dec 2009 18:42:07 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher Freigeben, obwohl Program endet? on Tue, 22 Dec 2009 18:58:21 GMT]]></title><description><![CDATA[<p>Geht auch einfacher mit <code>exit()</code> . <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/1826549</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826549</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 22 Dec 2009 18:58:21 GMT</pubDate></item></channel></rss>