<?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[Wie St9bad_alloc beseitigen?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich kann leider kein Minimalbeispiel posten weil mein code etwas größer ist. Mir geht es vielmehr darum zu erfahren wie ihr mit St9bad_allocs umgeht bzw. wie ihr versucht diese zu beseitigen. Mein code läuft leckfrei und auch korrekt (nach validierungen). Bei einem bestimmten input der von der Größe eigentlich nur ca. 100 MB braucht fängt mein Programm die bad_alloc exception ab. Mittels valgrind bekomme ich nur die message dass in einer bibliotheksfunktion an die ich arrays übergebe die aus den input daten bestehen ein</p>
<pre><code>Use of uninitialised value of size 4
==10905==    at 0x46C23D8: (within /usr/lib/atlas/sse2/libblas.so.3.0)
Warning: silly arg (-1248597728) to __builtin_vec_new()
**10905** new/new[] failed and should throw an exception, but Valgrind
   cannot throw exceptions and so is aborting instead.  Sorry.
==10905==    at 0x4021841: VALGRIND_PRINTF_BACKTRACE (valgrind.h:2366)
==10905==    by 0x4021A89: operator new[](unsigned) (vg_replace_malloc.c:195)
==10905==    by 0x8057587: //hier kommt der trace meines codes
</code></pre>
<p>. Ich weiß leider nicht wie ich sinnvollerweise an die sache rangehen soll da ich glaube dass der fehler bei mir liegt. Ich habe einen referenzcode der auch diese bibliothekfunktion verwendet und da krachts nicht.</p>
<p>Wie würdet ihr vorgehen?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/248012/wie-st9bad_alloc-beseitigen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 07:02:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/248012.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 18 Aug 2009 16:54:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wie St9bad_alloc beseitigen? on Tue, 18 Aug 2009 16:54:46 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich kann leider kein Minimalbeispiel posten weil mein code etwas größer ist. Mir geht es vielmehr darum zu erfahren wie ihr mit St9bad_allocs umgeht bzw. wie ihr versucht diese zu beseitigen. Mein code läuft leckfrei und auch korrekt (nach validierungen). Bei einem bestimmten input der von der Größe eigentlich nur ca. 100 MB braucht fängt mein Programm die bad_alloc exception ab. Mittels valgrind bekomme ich nur die message dass in einer bibliotheksfunktion an die ich arrays übergebe die aus den input daten bestehen ein</p>
<pre><code>Use of uninitialised value of size 4
==10905==    at 0x46C23D8: (within /usr/lib/atlas/sse2/libblas.so.3.0)
Warning: silly arg (-1248597728) to __builtin_vec_new()
**10905** new/new[] failed and should throw an exception, but Valgrind
   cannot throw exceptions and so is aborting instead.  Sorry.
==10905==    at 0x4021841: VALGRIND_PRINTF_BACKTRACE (valgrind.h:2366)
==10905==    by 0x4021A89: operator new[](unsigned) (vg_replace_malloc.c:195)
==10905==    by 0x8057587: //hier kommt der trace meines codes
</code></pre>
<p>. Ich weiß leider nicht wie ich sinnvollerweise an die sache rangehen soll da ich glaube dass der fehler bei mir liegt. Ich habe einen referenzcode der auch diese bibliothekfunktion verwendet und da krachts nicht.</p>
<p>Wie würdet ihr vorgehen?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1763002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1763002</guid><dc:creator><![CDATA[fragerzeichen]]></dc:creator><pubDate>Tue, 18 Aug 2009 16:54:46 GMT</pubDate></item><item><title><![CDATA[Reply to Wie St9bad_alloc beseitigen? on Tue, 18 Aug 2009 17:12:45 GMT]]></title><description><![CDATA[<p>Geh doch mit dem Debugger schrittweise durch und schaue, wie Speicher angefordert wird bzw. ob die Variablen korrekt sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1763016</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1763016</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 18 Aug 2009 17:12:45 GMT</pubDate></item><item><title><![CDATA[Reply to Wie St9bad_alloc beseitigen? on Tue, 18 Aug 2009 19:49:31 GMT]]></title><description><![CDATA[<p>[Vermutung]</p>
<p>Du versuchst zu viel Speicher anzufordern.<br />
Guck dir die Stelle wo die Exception fliegt nochmal genau an.</p>
<p>Du versuchst da ein Array anzufordern, das garnicht in den Speicher passt. -&gt; Überlauf -&gt; Fehler.</p>
<p>[/Vermutung]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1763098</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1763098</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 18 Aug 2009 19:49:31 GMT</pubDate></item><item><title><![CDATA[Reply to Wie St9bad_alloc beseitigen? on Tue, 18 Aug 2009 19:57:41 GMT]]></title><description><![CDATA[<p>Die Warnung in Zeile 3 sieht nett aus - __builtin_vec_new klingt entfernt nach etwas in Richtung new[], und da ein Argument von -1248597728 ist seltsam oder?<br />
Uninitialisierter Wert oder Wert nach Überlauf an new[] übergeben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1763103</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1763103</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 18 Aug 2009 19:57:41 GMT</pubDate></item><item><title><![CDATA[Reply to Wie St9bad_alloc beseitigen? on Tue, 18 Aug 2009 20:57:35 GMT]]></title><description><![CDATA[<p>Ich frage mich sowieso, wie dort ein negativer Wert zustande kommen kann, da man bei Speicheranforderungen immer mit <code>unsigned</code> -Typen arbeitet. Da muss fast was Grösseres schief gelaufen sein... Oder es passiert einfach etwas Willkürliches.</p>
<p>fragerzeichen, lass das Programm mit Debugger, aber ohne ohne Valgrind laufen, und verfolge die <code>std::bad_alloc</code> -Exception über den Stackframe bis zur Entstehungsstelle zurück.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1763120</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1763120</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 18 Aug 2009 20:57:35 GMT</pubDate></item><item><title><![CDATA[Reply to Wie St9bad_alloc beseitigen? on Tue, 18 Aug 2009 22:03:02 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/12954">@Nexus</a>: kann leicht sein dass nur die Ausgabe signed ist.</p>
<p>Ist aber auch ziemlich egal, da die mir bekannten Systeme sowieso keine zusammenhängenden Speicherbereiche unterstützen, deren Grösse jemals das höchstwertige Bit gesetzt haben könnte.</p>
<p>Ob man den &quot;Sanity-Check&quot; dann als <code>if (size &amp; high_bit_mask)</code> oder als <code>if (size &lt; 0)</code> implementiert, ist im Grunde genommen egal. Ersteres ist natürlich &quot;schöner&quot; und &quot;sauberer&quot;. Aber tun werden beide dasselbe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1763158</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1763158</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 18 Aug 2009 22:03:02 GMT</pubDate></item><item><title><![CDATA[Reply to Wie St9bad_alloc beseitigen? on Wed, 19 Aug 2009 14:36:00 GMT]]></title><description><![CDATA[<p>Hmm....also ich debugge gerade und lege eine Array der Größe an:</p>
<pre><code class="language-cpp">my_array = new T[len_j * len_i];
</code></pre>
<p>Der debugger sagt len_j = 19514 und len_i = 19514.<br />
Der Template Typ ist double. Damit lege ich ja<br />
19514*19514*8 = 3046369568 Byte = 2905.24 MByte = 2.837 GByte an oder?<br />
Ist die Rechnung korrekt?</p>
<p>Das würde meine 2 GB Speicher sprengen und damit würde die Badalloc exception korrekt sein....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1763539</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1763539</guid><dc:creator><![CDATA[fragerzeichen]]></dc:creator><pubDate>Wed, 19 Aug 2009 14:36:00 GMT</pubDate></item><item><title><![CDATA[Reply to Wie St9bad_alloc beseitigen? on Wed, 19 Aug 2009 14:40:03 GMT]]></title><description><![CDATA[<p>Das kann gut sein, ja.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1763541</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1763541</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 19 Aug 2009 14:40:03 GMT</pubDate></item><item><title><![CDATA[Reply to Wie St9bad_alloc beseitigen? on Wed, 19 Aug 2009 17:13:33 GMT]]></title><description><![CDATA[<p>Es kann auch schon viel früher als bei deiner RAM-Grösse zu einer <code>std::bad_alloc</code> kommen, zum Beispiel, wenn kein so grosser zusammenhängender Block gefunden werden kann. Und ein 2.8GB-Block ist <em>riesig</em>. Andererseits kann die Auslagerungsdatei unter Umständen dafür sorgen, dass mehr Speicher angefordert werden kann (der Computer wird dann langsam), wahrscheinlich aber eher bei kleineren Blöcken.</p>
<p>Deinen Speicherverbrauch kannst du bestimmt stark reduzieren, dazu müsstest du allerdings etwas konkreter werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1763625</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1763625</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 19 Aug 2009 17:13:33 GMT</pubDate></item><item><title><![CDATA[Reply to Wie St9bad_alloc beseitigen? on Wed, 19 Aug 2009 19:26:54 GMT]]></title><description><![CDATA[<blockquote>
<p>Deinen Speicherverbrauch kannst du bestimmt stark reduzieren, dazu müsstest du allerdings etwas konkreter werden.</p>
</blockquote>
<p>Ich baue intern aus einer systemmatrix eine submatrix auf die für diesen einen speziellen fall ca. 400 Millionen Einträge hat. Anderer input der sogar größer ist aber dafür dünner produziert den bad alloc nicht. Es ist also durchaus input-speichergrößen-abhängig und auch die referenzimplementierung bricht da zusammen.</p>
<p>Dennoch: Ich freue mich dazu gebracht worden zu sein nochmals die subalgorithmen durchzudenken.<br />
Danke an dieser stelle für den Austausch!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1763699</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1763699</guid><dc:creator><![CDATA[fragerzeichen]]></dc:creator><pubDate>Wed, 19 Aug 2009 19:26:54 GMT</pubDate></item></channel></rss>