<?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[Problem mit try catch und boost::shared_array]]></title><description><![CDATA[<p>Mein Programm verabschiedet sich ständig an einer bestimmten Stelle. Es schließt sich einfach mit Exitcode 1. Nun versuche ich herrauszufinden warum und irgentwie eine Exception abzufangen, aber irgentwie will das nicht:</p>
<pre><code class="language-cpp">try {
                            Lines.back().reset(temp); // Hier stürzt es ab.
                        }
                        catch(std::bad_alloc) {
                            MessageBox(0, &quot;std::bad_alloc&quot;, &quot;&quot;, 0); // Wird nie ausgeführt.
                        }
</code></pre>
<pre><code class="language-cpp">std::vector&lt;boost::shared_array&lt;char&gt; &gt; Lines;
</code></pre>
<pre><code class="language-cpp">char* temp = new char[ZeichenAnzahl + 1];
</code></pre>
<p>Wie kann die boost::shared_array&lt;T&gt;::reset() Funktion abstürzen, wenn nich durch eine exception?!?</p>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/143547/problem-mit-try-catch-und-boost-shared_array</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 09:19:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/143547.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 09 Apr 2006 16:10:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit try catch und boost::shared_array on Sun, 09 Apr 2006 16:10:45 GMT]]></title><description><![CDATA[<p>Mein Programm verabschiedet sich ständig an einer bestimmten Stelle. Es schließt sich einfach mit Exitcode 1. Nun versuche ich herrauszufinden warum und irgentwie eine Exception abzufangen, aber irgentwie will das nicht:</p>
<pre><code class="language-cpp">try {
                            Lines.back().reset(temp); // Hier stürzt es ab.
                        }
                        catch(std::bad_alloc) {
                            MessageBox(0, &quot;std::bad_alloc&quot;, &quot;&quot;, 0); // Wird nie ausgeführt.
                        }
</code></pre>
<pre><code class="language-cpp">std::vector&lt;boost::shared_array&lt;char&gt; &gt; Lines;
</code></pre>
<pre><code class="language-cpp">char* temp = new char[ZeichenAnzahl + 1];
</code></pre>
<p>Wie kann die boost::shared_array&lt;T&gt;::reset() Funktion abstürzen, wenn nich durch eine exception?!?</p>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1033931</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1033931</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Sun, 09 Apr 2006 16:10:45 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit try catch und boost::shared_array on Sun, 09 Apr 2006 16:34:54 GMT]]></title><description><![CDATA[<p>naja du fängst ja nicht jede exception nur bad_alloc, es gibt ja noch mehr</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1033958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1033958</guid><dc:creator><![CDATA[Mario Sandler]]></dc:creator><pubDate>Sun, 09 Apr 2006 16:34:54 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit try catch und boost::shared_array on Sun, 09 Apr 2006 16:36:13 GMT]]></title><description><![CDATA[<p><a href="http://Storm.Xapek.de" rel="nofollow">Storm.Xapek.de</a> schrieb:</p>
<blockquote>
<p>naja du fängst ja nicht jede exception nur bad_alloc, es gibt ja noch mehr</p>
</blockquote>
<p>Auf der boost seite stand, dass dies die einzige exception ist. Und</p>
<pre><code class="language-cpp">catch(...)
</code></pre>
<p>hab ich auch schon probiert, hat aber auch nichts aufgefangen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1033959</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1033959</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Sun, 09 Apr 2006 16:36:13 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit try catch und boost::shared_array on Sun, 09 Apr 2006 17:03:07 GMT]]></title><description><![CDATA[<p>was ist mit Lines? ist das evtl. leer? reset könnte nur eine exceptions werfen wenn der destruktor der elemente wirft, das trifft hier auf keinen fall zu. std::bad_alloc könnte beim new geworfen werden, das sich nicht im gezeigten try block befindet...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1033975</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1033975</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 09 Apr 2006 17:03:07 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit try catch und boost::shared_array on Sun, 09 Apr 2006 17:07:01 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>was ist mit Lines? ist das evtl. leer? reset könnte nur eine exceptions werfen wenn der destruktor der elemente wirft, das trifft hier auf keinen fall zu. std::bad_alloc könnte beim new geworfen werden, das sich nicht im gezeigten try block befindet...</p>
</blockquote>
<p>Also lines ist nicht leer, ich kann mir sogar den Inhalt vorher mit Lines.back().get() anzeigen lassen.<br />
Also ich bin mir zeimlich sicher, dass der Fehler bei dieser Zeile auftritt, weil ich davor eine und dahinter eine MessageBox ausgebe.<br />
Das Problem tritt auf, wenn die stelle schon mehrmals durchgelaufen ist. Könnte es sein das shard_array eine Begrenzung hat?</p>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1033977</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1033977</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Sun, 09 Apr 2006 17:07:01 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit try catch und boost::shared_array on Sun, 09 Apr 2006 17:29:26 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">std::vector&lt;std::string&gt;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1033998</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1033998</guid><dc:creator><![CDATA[:o]]></dc:creator><pubDate>Sun, 09 Apr 2006 17:29:26 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit try catch und boost::shared_array on Sun, 09 Apr 2006 17:57:31 GMT]]></title><description><![CDATA[<p>:o schrieb:</p>
<blockquote>
<pre><code class="language-cpp">std::vector&lt;std::string&gt;
</code></pre>
</blockquote>
<p>ich hab schon meinen grund warum ich ein array von chars nehme und nicht einen string.<br />
Aber du hast schon recht, wenn alles nicht mehr funktioniert, werde ich versuchen es auf std::string umzuschreiben.</p>
<p>Funktioniert std::string::c_str() eigentlich immer? Weil dazu müssten die Daten ja alle hintereinander im Speicher legen.</p>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1034015</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1034015</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Sun, 09 Apr 2006 17:57:31 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit try catch und boost::shared_array on Sun, 09 Apr 2006 18:00:30 GMT]]></title><description><![CDATA[<blockquote>
<p>ch hab schon meinen grund warum ich ein array von chars nehme und nicht einen string.</p>
</blockquote>
<p>Weil du ein Frickler bist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1034019</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1034019</guid><dc:creator><![CDATA[window]]></dc:creator><pubDate>Sun, 09 Apr 2006 18:00:30 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit try catch und boost::shared_array on Sun, 09 Apr 2006 18:03:54 GMT]]></title><description><![CDATA[<p>window schrieb:</p>
<blockquote>
<blockquote>
<p>ch hab schon meinen grund warum ich ein array von chars nehme und nicht einen string.</p>
</blockquote>
<p>Weil du ein Frickler bist?</p>
</blockquote>
<p>nein</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1034021</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1034021</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Sun, 09 Apr 2006 18:03:54 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit try catch und boost::shared_array on Sun, 09 Apr 2006 18:15:13 GMT]]></title><description><![CDATA[<p>Gibt nur einen Grund wo nen std::string für chars nicht geeignet ist und dort kann man nen vector (oder anderen container) nehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1034034</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1034034</guid><dc:creator><![CDATA[Any]]></dc:creator><pubDate>Sun, 09 Apr 2006 18:15:13 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit try catch und boost::shared_array on Mon, 10 Apr 2006 06:13:43 GMT]]></title><description><![CDATA[<p>joomoo schrieb:</p>
<blockquote>
<p>Funktioniert std::string::c_str() eigentlich immer? Weil dazu müssten die Daten ja alle hintereinander im Speicher legen.</p>
</blockquote>
<p>Ja, tut sie - und der Inhalt des string's <strong>steht</strong> hintereinander im Speicher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1034235</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1034235</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 10 Apr 2006 06:13:43 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit try catch und boost::shared_array on Mon, 10 Apr 2006 14:27:17 GMT]]></title><description><![CDATA[<p>Was für einen Fehler bekommst du denn? Notfalls mal debugger anwerfen - estartu hat ein schönes tutorial geschrieben...</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6950">@joomoo</a>:<br />
nur mal so als Anmerkung: boost::shared_array gibt dir eine performancegarantie, die du mit std::string nur implementationsspezifisch bekommst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1034574</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1034574</guid><dc:creator><![CDATA[peterchen]]></dc:creator><pubDate>Mon, 10 Apr 2006 14:27:17 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit try catch und boost::shared_array on Mon, 10 Apr 2006 14:32:03 GMT]]></title><description><![CDATA[<p>peterchen schrieb:</p>
<blockquote>
<p>Was für einen Fehler bekommst du denn? Notfalls mal debugger anwerfen - estartu hat ein schönes tutorial geschrieben...</p>
</blockquote>
<p>Gar keine, das Programm stürzt einfach ab. Die einzige rückmeldung ist der return wert von int main 1.</p>
<p>Was kann ich mit dem Debugger herrausfinden? Ich dachte da kann man das Programm anbestimmten stellen anhalten? Aber ich weiß schon, dass es an dieser Zeile liegt.</p>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1034584</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1034584</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Mon, 10 Apr 2006 14:32:03 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit try catch und boost::shared_array on Mon, 10 Apr 2006 16:02:52 GMT]]></title><description><![CDATA[<p>Programmablauf abgucken, an der Absturzstelle verwendete Variablen angucken ob das was &quot;komisch&quot; ist. Wenn ja, gucken wo das herkommt.</p>
<p>Aber bei STL-Containern ist das schon recht schwierig...</p>
<p>Ich denke nicht, daß de Fehler an dieser Stelle liegt.</p>
<p>catch fängt nur C++ exceptions, zumindest soll es nur das. Harte Fehler (z.B. Schutzverletzung) fängst du damit nicht (VC6 hat das mal gemacht, das war aber nicht so geplant..).</p>
<p>Verwendest du einen debug build? Welche Entwicklungsumgebung? (Davon hängt halt ab, wie bestimmte Fehler aussehen)</p>
<p>vor dem Aufruf einfach mal lines durchgehen und auf die console rausgeben, ebenso temp.<br />
wenn das geht, sollte auch deine Zeile gehen <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>
<p>P.S. daa <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6950">@joomoo</a> sollte eigentlich ein &quot;<a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/15171">@window</a>&quot; werden</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1034650</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1034650</guid><dc:creator><![CDATA[peterchen]]></dc:creator><pubDate>Mon, 10 Apr 2006 16:02:52 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit try catch und boost::shared_array on Mon, 10 Apr 2006 23:12:04 GMT]]></title><description><![CDATA[<p>joomoo schrieb:</p>
<blockquote>
<p>Wie kann die boost::shared_array&lt;T&gt;::reset() Funktion abstürzen, wenn nich durch eine exception?!?</p>
</blockquote>
<p>Wenn es vorher schon auf was zeigte, dann wird das ja freigegeben. Wenn das aber schon freigegeben wurde, dann schmiert er an der Stelle ab. Zeig doch mal, wie Du die Daten erstellst und in den vector reinfüllst. Vielleicht hast Du da irgendwo ne Temporäre Variable gebaut, die das Ding unabsichtlich freigibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1034854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1034854</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Mon, 10 Apr 2006 23:12:04 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit try catch und boost::shared_array on Tue, 11 Apr 2006 00:36:03 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>joomoo schrieb:</p>
<blockquote>
<p>Funktioniert std::string::c_str() eigentlich immer? Weil dazu müssten die Daten ja alle hintereinander im Speicher legen.</p>
</blockquote>
<p>Ja, tut sie - und der Inhalt des string's <strong>steht</strong> hintereinander im Speicher.</p>
</blockquote>
<p>Im Ergebnis von c_str() stehen die Zeichen (logischerweise) direkt hintereinander. Aber c_str() darf konvertieren, die interne std::string-Darstellung muss also nicht der C-String-Darstellung entsprechen. Insbesondere muss die interne std::string-Darstellung weder nullterminiert noch zusammenhängend sein (z.B. <a href="http://groups.google.com/group/de.comp.lang.iso-c++/msg/fade72d9f2b8dcac" rel="nofollow">[1]</a>).<br />
Würde die interne Darstellung auf reine Nullterminierung bauen, könnte std::string gar keine Nullzeichen enthalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1034862</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1034862</guid><dc:creator><![CDATA[Christoph]]></dc:creator><pubDate>Tue, 11 Apr 2006 00:36:03 GMT</pubDate></item></channel></rss>