<?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ändnis-Frage: Ressourcen-Freigabe bei unbehandelten Exceptions ?]]></title><description><![CDATA[<p>Hi,<br />
wenn ich einer meiner Klassen eine Exception werfe, die der Benutzer meiner Klasse NICHT behandelt und folglich das Programm terminiert, werden die allokierten Resourcen (z.B. Speicher) vom Betriebsystem (Linux, Windows) wieder freigegeben ??</p>
<p>Ich fürchte und vermute jetzt schon, die Antwort lautet NEIN... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> Um alles muss man sich selber kümmern ... oder doch nicht ??</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/203333/verständnis-frage-ressourcen-freigabe-bei-unbehandelten-exceptions</link><generator>RSS for Node</generator><lastBuildDate>Wed, 07 Oct 2026 13:07:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/203333.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 21 Jan 2008 17:03:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verständnis-Frage: Ressourcen-Freigabe bei unbehandelten Exceptions ? on Mon, 21 Jan 2008 17:03:57 GMT]]></title><description><![CDATA[<p>Hi,<br />
wenn ich einer meiner Klassen eine Exception werfe, die der Benutzer meiner Klasse NICHT behandelt und folglich das Programm terminiert, werden die allokierten Resourcen (z.B. Speicher) vom Betriebsystem (Linux, Windows) wieder freigegeben ??</p>
<p>Ich fürchte und vermute jetzt schon, die Antwort lautet NEIN... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> Um alles muss man sich selber kümmern ... oder doch nicht ??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1440781</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1440781</guid><dc:creator><![CDATA[Diogenes77]]></dc:creator><pubDate>Mon, 21 Jan 2008 17:03:57 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnis-Frage: Ressourcen-Freigabe bei unbehandelten Exceptions ? on Mon, 21 Jan 2008 17:13:23 GMT]]></title><description><![CDATA[<p>Destruktoren werden bei dem Wurf einer Exception aufgerufen. Diese Tehnik verwendet man dann meist zur Freigabe von Ressourcen. Aus diesem Grund gibt es das Schlüsselwort finally in C++ auch nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1440789</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1440789</guid><dc:creator><![CDATA[Don06]]></dc:creator><pubDate>Mon, 21 Jan 2008 17:13:23 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnis-Frage: Ressourcen-Freigabe bei unbehandelten Exceptions ? on Mon, 21 Jan 2008 17:23:21 GMT]]></title><description><![CDATA[<p>Wird Stack-Unwinding durchgeführt wenn die Exception ins Leere läuft?</p>
<p>Wie dem auch sei: Zum Programmende werden alle Ressourcen des Betriebssystems auch von selbigem wieder eingesammelt. So richtige Speicherlecks sind Relikte aus Realmode- und 16bit-Zeiten. Nichtsdestotrotz sollte man sich natürlich selbst um seine Brocken kümmern, allein schon wenn das Programm länger laufen soll.</p>
<p>Aber selbst gegen nicht gefangene Exceptions gibt es ein Mittel: Einfach angewöhnen in main immer ein try { } catch (...) { } um das Programm zu setzen <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/1440797</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1440797</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 21 Jan 2008 17:23:21 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnis-Frage: Ressourcen-Freigabe bei unbehandelten Exceptions ? on Mon, 21 Jan 2008 17:26:22 GMT]]></title><description><![CDATA[<p>Danke für die Info, geht's aber etwas präziser ? Heisst das, wenn eine Exception nicht behandelt wird und das Programm aus diesem Grund terminiert, werden Destruktoren aller Variablen aller Funktionen, die sich im Stack befinden, der Reihe nach aufgerufen ??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1440798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1440798</guid><dc:creator><![CDATA[Diogenes77]]></dc:creator><pubDate>Mon, 21 Jan 2008 17:26:22 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnis-Frage: Ressourcen-Freigabe bei unbehandelten Exceptions ? on Mon, 21 Jan 2008 17:29:38 GMT]]></title><description><![CDATA[<p>Ja, Destruktoren werden von allen automatischen Variablen aufgerufen. Wenn du allerdings mit new Objekte auf dem Heap allokiert hast, wird dafür nicht automatisch delete aufgerufen - für sowas gibts auto_ptr und die Boost-smartpointer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1440800</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1440800</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 21 Jan 2008 17:29:38 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnis-Frage: Ressourcen-Freigabe bei unbehandelten Exceptions ? on Mon, 21 Jan 2008 17:34:13 GMT]]></title><description><![CDATA[<p>Um die (z.B. mit new auf dem Heap) selbst allokierten Resourcen kümmern sich klarerweise meine Destruktoren. Ich wollte nur sichergehen, ob sie denn im Fallen von unbehandelter Exception auch wirklich zum Zug kommen... Vielen Dank für die Antworten, wieder was gelernt <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/1440803</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1440803</guid><dc:creator><![CDATA[Diogenes77]]></dc:creator><pubDate>Mon, 21 Jan 2008 17:34:13 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnis-Frage: Ressourcen-Freigabe bei unbehandelten Exceptions ? on Mon, 21 Jan 2008 17:47:21 GMT]]></title><description><![CDATA[<p>Das trifft alles auf C++ Exceptions zu, bei SEH (z.B. wegen einer Access Violation) werden keine Destruktoren aufgerufen. Das OS gibt aber die beanspruchten Ressourcen frei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1440811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1440811</guid><dc:creator><![CDATA[Superlexx]]></dc:creator><pubDate>Mon, 21 Jan 2008 17:47:21 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnis-Frage: Ressourcen-Freigabe bei unbehandelten Exceptions ? on Mon, 21 Jan 2008 17:51:14 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>Wird Stack-Unwinding durchgeführt wenn die Exception ins Leere läuft?</p>
</blockquote>
<p>Soweit ich weiß ist das undefiniert. EDIT: Implementation defined, siehe 15.5.1.</p>
<blockquote>
<p>Wie dem auch sei: Zum Programmende werden alle Ressourcen des Betriebssystems auch von selbigem wieder eingesammelt. So richtige Speicherlecks sind Relikte aus Realmode- und 16bit-Zeiten. Nichtsdestotrotz sollte man sich natürlich selbst um seine Brocken kümmern, allein schon wenn das Programm länger laufen soll.</p>
</blockquote>
<p>Es gibt natürlich auch Ressourcen, die nicht automatisch freigegeben werden. Lockfiles zum Beispiel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1440812</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1440812</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Mon, 21 Jan 2008 17:51:14 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnis-Frage: Ressourcen-Freigabe bei unbehandelten Exceptions ? on Tue, 22 Jan 2008 08:40:53 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>LordJaxom schrieb:</p>
<blockquote>
<p>Wird Stack-Unwinding durchgeführt wenn die Exception ins Leere läuft?</p>
</blockquote>
<p>Soweit ich weiß ist das undefiniert. EDIT: Implementation defined, siehe 15.5.1.<br />
...</p>
</blockquote>
<p>Ich habe das vor einiger Zeit mal ausprobiert (mit gcc und VS6.0) ... und bei beiden wurde bei nichtgefangenen Exceptions KEIN Stack-unwindung gemacht. Damals hatte jemand (camper ? auf jedenfall jemand &quot;Gewichtiges&quot;) auch erzählt, es sei eigentlich auch sinnvoller, weil man nach einem terminate() gerne noch anhand des Stacktraces den Programmzustand ermitteln würde - was nicht mehr (so einfach ?) ginge, wenn zuvor ein Stackunwindung gelaufen sei.<br />
Fand ich jedenfalls plausibel.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1441080</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1441080</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 22 Jan 2008 08:40:53 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnis-Frage: Ressourcen-Freigabe bei unbehandelten Exceptions ? on Tue, 22 Jan 2008 08:46:08 GMT]]></title><description><![CDATA[<p>Bei mir (g++ 4.2.1) werden lokale Objekte nicht zerstört, bzw deren Destruktoren nicht aufgerufen, wenn ich eine Exception werfe... Außer ich fange sie irgendwo auf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1441083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1441083</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Tue, 22 Jan 2008 08:46:08 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnis-Frage: Ressourcen-Freigabe bei unbehandelten Exceptions ? on Tue, 22 Jan 2008 11:20:57 GMT]]></title><description><![CDATA[<p>Wenn eine Exception nicht gefangen wird wird laut Standard IIRC terminate() aufgerufen, welches das Programm dann abbricht. Ob Stack Unwinding passiert oder nicht ist &quot;implementation defined&quot;, kann sich also jede Implementierung frei aussuchen.</p>
<p>Leider also nix worauf man sich verlassen kann.<br />
Das einzige was man also erzwingen kann ist dass immer Stack-Unwinding passiert, nämlich indem man selbst irgendwo ein catch(...) um das ganze Programm rum macht, dann hat man das Verhalten garantiert:</p>
<pre><code class="language-cpp">int main()
{
    try
    {
        return main2();
    }
    catch (...)
    {
        // stack unwinding ist hier bereits passiert
        terminate(); // oder exit(1) oder sowas
    }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1441196</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1441196</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 22 Jan 2008 11:20:57 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnis-Frage: Ressourcen-Freigabe bei unbehandelten Exceptions ? on Tue, 22 Jan 2008 14:11:21 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>...Ob Stack Unwinding passiert oder nicht ist &quot;implementation defined&quot;, kann sich also jede Implementierung frei aussuchen.</p>
<p>Leider also nix worauf man sich verlassen kann....</p>
</blockquote>
<p>Das wollte ich auch nicht behaupten ... nur eben, dass es auch Implementationen gibt, die KEINES machen (und dass es evtl. ganz sinnvoll sein kann).</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1441320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1441320</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 22 Jan 2008 14:11:21 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnis-Frage: Ressourcen-Freigabe bei unbehandelten Exceptions ? on Tue, 22 Jan 2008 15:22:59 GMT]]></title><description><![CDATA[<p>Ich wollte die auch nicht zurechtweisen/korrigieren, sondern nur klarstellen dass das von dir beobachtete Verhalten im Standard ganz eindeutig &quot;erlaubt&quot; ist, und man sich daher auf nichts verlassen darf - nichtmal wenn man eine 100% konforme Implementierung hat (bzw. hätte, gibt ja keine) <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/1441360</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1441360</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 22 Jan 2008 15:22:59 GMT</pubDate></item></channel></rss>