<?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[Ressourcen und throw...]]></title><description><![CDATA[<p>Hi,</p>
<p>mir stellt sich gerade die Frage, was mit den Ressourcen passiert, wenn man eine Exception auslöst. Hier ein kleines Beispiel.</p>
<pre><code class="language-cpp">short MyFunc (...)
{
    char *pcRes = new char[10];
    ...
    if (...)
        throw (...);
    ...
    delete[] pcRes;
    return ...;
}
</code></pre>
<p>Da ich mich momentan noch mit den Exceptions anfreunde, bin ich noch nicht so bewandert auf dem Gebiet. Werden die Ressourcen von BS freigegeben oder muss man die gesondert freigeben? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Thx, Maffe</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/133300/ressourcen-und-throw</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 19:47:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/133300.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 16 Jan 2006 18:44:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ressourcen und throw... on Mon, 16 Jan 2006 18:44:26 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>mir stellt sich gerade die Frage, was mit den Ressourcen passiert, wenn man eine Exception auslöst. Hier ein kleines Beispiel.</p>
<pre><code class="language-cpp">short MyFunc (...)
{
    char *pcRes = new char[10];
    ...
    if (...)
        throw (...);
    ...
    delete[] pcRes;
    return ...;
}
</code></pre>
<p>Da ich mich momentan noch mit den Exceptions anfreunde, bin ich noch nicht so bewandert auf dem Gebiet. Werden die Ressourcen von BS freigegeben oder muss man die gesondert freigeben? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Thx, Maffe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/968286</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/968286</guid><dc:creator><![CDATA[Maffe001]]></dc:creator><pubDate>Mon, 16 Jan 2006 18:44:26 GMT</pubDate></item><item><title><![CDATA[Reply to Ressourcen und throw... on Mon, 16 Jan 2006 18:48:33 GMT]]></title><description><![CDATA[<p>std::vector und das Problem ist gelöst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/968290</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/968290</guid><dc:creator><![CDATA[tipp]]></dc:creator><pubDate>Mon, 16 Jan 2006 18:48:33 GMT</pubDate></item><item><title><![CDATA[Reply to Ressourcen und throw... on Mon, 16 Jan 2006 18:54:43 GMT]]></title><description><![CDATA[<p>In Java gibts für sowas finally, aber wie es da in C++ ausschaut???</p>
<pre><code class="language-java">stream = new ...
try {
...
} catch ... {
} finally {
   stream.close();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/968296</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/968296</guid><dc:creator><![CDATA[JavaUser]]></dc:creator><pubDate>Mon, 16 Jan 2006 18:54:43 GMT</pubDate></item><item><title><![CDATA[Reply to Ressourcen und throw... on Mon, 16 Jan 2006 18:58:13 GMT]]></title><description><![CDATA[<p><strong>@tipp:</strong><br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> Was hat das denn mit meiner Frage zu tun? Ich kann das Bsp auch für einen anderen Zeigertypen machen.</p>
<pre><code class="language-cpp">short MyFunc (...)
{
    TMyClass *pMyClass = new TMyClass;
    ...
    if (...)
        throw (...);
    ...
    delete pMyClass;
    return ...;
}
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/968300</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/968300</guid><dc:creator><![CDATA[Maffe001]]></dc:creator><pubDate>Mon, 16 Jan 2006 18:58:13 GMT</pubDate></item><item><title><![CDATA[Reply to Ressourcen und throw... on Mon, 16 Jan 2006 19:47:18 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">void f() try
{
	char*p=new char[...];
	if (...)
        throw (p);
} 
    catch (char*e)
{
    delete [] e;
    throw;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/968344</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/968344</guid><dc:creator><![CDATA[Cpt. Tanga]]></dc:creator><pubDate>Mon, 16 Jan 2006 19:47:18 GMT</pubDate></item><item><title><![CDATA[Reply to Ressourcen und throw... on Mon, 16 Jan 2006 19:52:47 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;memory&gt;

short MyFunc (...)
{
    std::auto_ptr&lt;TMyClass&gt; pMyClass( new TMyClass);
    ...
    if (...)
        throw (...);
    ...
    return ...;
}
</code></pre>
<p>Komm aber bitte nicht auf die Idee, auto_ptr mit arrays zu verwenden, das geht schief.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/968347</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/968347</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Mon, 16 Jan 2006 19:52:47 GMT</pubDate></item><item><title><![CDATA[Reply to Ressourcen und throw... on Mon, 16 Jan 2006 19:55:52 GMT]]></title><description><![CDATA[<blockquote>
<p>Werden die Ressourcen von BS freigegeben oder muss man die gesondert freigeben?</p>
</blockquote>
<p>Nein sie werden nicht vom BS freigegeben. Die unelegante Lösung wäre ein try{}catch(...){delete x;throw;}delete x; Konstruct. &quot;...&quot; soll wiklich so im Code stehen und nicht von einem Type wie Cpt. Tanga es vorgeschlagen hat ersetzt werden. &quot;...&quot; heist &quot;fange alle Ausnahmen&quot;. Die elegante Lösung ist das delete in einen Destruktor zu verfrachten. Das geht am einfachsten mit std::vector, std::auto_ptr, boost::shared_ptr, ... Man sich aber auch selbst eine Klasse schreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/968349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/968349</guid><dc:creator><![CDATA[Ben04]]></dc:creator><pubDate>Mon, 16 Jan 2006 19:55:52 GMT</pubDate></item><item><title><![CDATA[Reply to Ressourcen und throw... on Mon, 16 Jan 2006 20:02:09 GMT]]></title><description><![CDATA[<p>Also soweit, wie ich das verstanden habe, ist das gar nicht nötig.</p>
<p>Dr. W. Hanrath - C++ schrieb:</p>
<blockquote>
<p>[...]<br />
if (sonderfall) throw ausdruck;<br />
Das System bricht hierauf geordnet die Abarbeitung des ganzen tryBlockes<br />
ab, wobei alle innerhalb dieses Blockes  auch bei zwischenzeitlich erfolgten<br />
Funktionsaufrufenerzeugten automatischen Variablen wieder zerstört werden<br />
(der Variablenstack wird auf den Zustand zu Beginn des tryBlockes zurückgespult<br />
), der Programmuss wird unmittelbar hinter dem tryBlock fortgesetzt<br />
und das einzige Objekt, was noch vom tryBlock übrig ist, ist das mittels throw<br />
ausgeworfene!<br />
[...]</p>
</blockquote>
<p>Oder habt ihr da andere Erfahrungen? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/968352</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/968352</guid><dc:creator><![CDATA[Maffe001]]></dc:creator><pubDate>Mon, 16 Jan 2006 20:02:09 GMT</pubDate></item><item><title><![CDATA[Reply to Ressourcen und throw... on Mon, 16 Jan 2006 20:06:35 GMT]]></title><description><![CDATA[<p>Maffe001 schrieb:</p>
<blockquote>
<p>Also soweit, wie ich das verstanden habe, ist das gar nicht nötig.</p>
</blockquote>
<p>In dem Zitat ist von &quot;automatischen&quot; Variablen die Rede. Dynamisch allozierte Objekte (per new) gehören da nicht dazu.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/968359</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/968359</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Mon, 16 Jan 2006 20:06:35 GMT</pubDate></item><item><title><![CDATA[Reply to Ressourcen und throw... on Mon, 16 Jan 2006 20:10:19 GMT]]></title><description><![CDATA[<p><strong><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/904">@Bashar</a>:</strong><br />
Und was sind automatische Variablen? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/968366</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/968366</guid><dc:creator><![CDATA[Maffe001]]></dc:creator><pubDate>Mon, 16 Jan 2006 20:10:19 GMT</pubDate></item><item><title><![CDATA[Reply to Ressourcen und throw... on Tue, 17 Jan 2006 01:09:19 GMT]]></title><description><![CDATA[<p>z.B.</p>
<p>int i;<br />
double d;</p>
<p>:p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/968531</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/968531</guid><dc:creator><![CDATA[ol]]></dc:creator><pubDate>Tue, 17 Jan 2006 01:09:19 GMT</pubDate></item></channel></rss>