<?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[[gelöst] std::bad_alloc trotz ausreichendem Speicher]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich bin gerade dabei mich in C++/DirectX einzuarbeiten und schreibe mir eine Klasse, mit der ich mit möglichst wenig Zeilen Code möglichst resourcenschonend viele 2D Texturen zeichnen kann. Sie soll ungefähr so aufgebaut sein, wie die SpriteBatch Klasse von XNA, evtl. kennt die ja einer. Dabei benutze ich dynamische VertexBuffer mit COUNT * 4 Vertices, wobei COUNT im Moment mit 1024 definiert ist. Ein Vertex ist so definiert:</p>
<pre><code>struct Vertex
{
    D3DXVECTOR3 position;
    D3DXCOLOR color;
    D3DXVECTOR2 texture;
};
</code></pre>
<p>Er hat also eine Größe von 36Bytes.<br />
Bis vor kurzem wurde noch in jedem Frame für jede Texture2D ein Vertex* erstellt, in dem dann die Vertices gespeichert wurden. Am Ende wurden dann alle vorhandenen Vertex* in den Speicher des VertexBuffers kopiert und gerendert. So hat das auch alles wunderbar funktioniert.<br />
Nun dachte ich mir aber, dass es doch ziemlich unperformant sein muss, in jedem Frame COUNT*4*sizeof(Vertex) Bytes zu reservieren, um sie danach wieder freizugeben. Also wollte ich mir einen Pool mit Vertex* anlegen. Somit würden alte Vertex* wiederverwendet werden und müssten nur einmal reserviert und einmal freigegeben werden. Und damit währen wir direkt beim Problem:<br />
So lange ich &quot;nur&quot; 1024 mal eine Textur zeichne, funktioniert alles, sobald ich aber mehr als 1024 Texturen zeichne, bekomme ich bei Vertex* vertices = new Vertex[COUNT * 4] eine std::bad_alloc exception. Die Exception tritt hier bei return... auf (in malloc.c):</p>
<pre><code>__forceinline void * __cdecl _heap_alloc (size_t size)

{

    if (_crtheap == 0) {
        _FF_MSGBANNER();    /* write run-time error banner */

        _NMSG_WRITE(_RT_CRT_NOTINIT);  /* write message */
        __crtExitProcess(255);  /* normally _exit(255) */
    }

    return HeapAlloc(_crtheap, 0, size ? size : 1);
}
</code></pre>
<p>Die exakte Fehlermeldung, die VisualStudio 2012 mir gibt, lautet:<br />
Unhandled exception at at 0x7698C41F in UnblockMeNative.exe: Microsoft C++ exception: std::bad_alloc at memory location 0x0031F3C0.</p>
<p>Ausgelöst wird sie von diesem Code bei new...:</p>
<pre><code>if(_vertices.size() &lt;= _vcount)
	_vertices.push_back(new Vertex[COUNT * 4]);
</code></pre>
<p>_vcount enthält dabei die Anzahl an aktuell verwendeten Vertex* und _vertices ist ein vector&lt;Vertex*&gt;.<br />
Das erste mal läuft das noch ohne Probleme durch, beim zweiten Mal kommt dann die oben genannte Fehlermeldung.</p>
<p>Seltsam dabei ist allerdings, wenn ich COUNT einfach auf 2048 festlege, läuft alles wie geschmiert, obwohl ja im Endeffekt genauso viel Speicher reserviert wird. Selbst wenn ich COUNT auf 4096 festlege und 4096 mal eine Textur zeichne, läuft das Programm. Zwar nur mit 33FPS (im Debug Mode), aber es läuft...<br />
Ich blick da leider nicht mehr so ganz durch, deswegen hab ich mich ja auch hier registriert <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>
<p>Wäre super, wenn ihr mir helfen könntet <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="😃"
    /><br />
Wenn ihr mehr Code braucht, liefere ich den natürlich gerne nach, allerdings wüsste ich nicht, welcher Teil noch für diese Fehlermeldung relevant sein könnte.</p>
<p>Vielen Dank im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/312131/gelöst-std-bad_alloc-trotz-ausreichendem-speicher</link><generator>RSS for Node</generator><lastBuildDate>Mon, 03 Aug 2026 18:46:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/312131.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 25 Dec 2012 17:27:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [gelöst] std::bad_alloc trotz ausreichendem Speicher on Thu, 27 Dec 2012 12:42:59 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich bin gerade dabei mich in C++/DirectX einzuarbeiten und schreibe mir eine Klasse, mit der ich mit möglichst wenig Zeilen Code möglichst resourcenschonend viele 2D Texturen zeichnen kann. Sie soll ungefähr so aufgebaut sein, wie die SpriteBatch Klasse von XNA, evtl. kennt die ja einer. Dabei benutze ich dynamische VertexBuffer mit COUNT * 4 Vertices, wobei COUNT im Moment mit 1024 definiert ist. Ein Vertex ist so definiert:</p>
<pre><code>struct Vertex
{
    D3DXVECTOR3 position;
    D3DXCOLOR color;
    D3DXVECTOR2 texture;
};
</code></pre>
<p>Er hat also eine Größe von 36Bytes.<br />
Bis vor kurzem wurde noch in jedem Frame für jede Texture2D ein Vertex* erstellt, in dem dann die Vertices gespeichert wurden. Am Ende wurden dann alle vorhandenen Vertex* in den Speicher des VertexBuffers kopiert und gerendert. So hat das auch alles wunderbar funktioniert.<br />
Nun dachte ich mir aber, dass es doch ziemlich unperformant sein muss, in jedem Frame COUNT*4*sizeof(Vertex) Bytes zu reservieren, um sie danach wieder freizugeben. Also wollte ich mir einen Pool mit Vertex* anlegen. Somit würden alte Vertex* wiederverwendet werden und müssten nur einmal reserviert und einmal freigegeben werden. Und damit währen wir direkt beim Problem:<br />
So lange ich &quot;nur&quot; 1024 mal eine Textur zeichne, funktioniert alles, sobald ich aber mehr als 1024 Texturen zeichne, bekomme ich bei Vertex* vertices = new Vertex[COUNT * 4] eine std::bad_alloc exception. Die Exception tritt hier bei return... auf (in malloc.c):</p>
<pre><code>__forceinline void * __cdecl _heap_alloc (size_t size)

{

    if (_crtheap == 0) {
        _FF_MSGBANNER();    /* write run-time error banner */

        _NMSG_WRITE(_RT_CRT_NOTINIT);  /* write message */
        __crtExitProcess(255);  /* normally _exit(255) */
    }

    return HeapAlloc(_crtheap, 0, size ? size : 1);
}
</code></pre>
<p>Die exakte Fehlermeldung, die VisualStudio 2012 mir gibt, lautet:<br />
Unhandled exception at at 0x7698C41F in UnblockMeNative.exe: Microsoft C++ exception: std::bad_alloc at memory location 0x0031F3C0.</p>
<p>Ausgelöst wird sie von diesem Code bei new...:</p>
<pre><code>if(_vertices.size() &lt;= _vcount)
	_vertices.push_back(new Vertex[COUNT * 4]);
</code></pre>
<p>_vcount enthält dabei die Anzahl an aktuell verwendeten Vertex* und _vertices ist ein vector&lt;Vertex*&gt;.<br />
Das erste mal läuft das noch ohne Probleme durch, beim zweiten Mal kommt dann die oben genannte Fehlermeldung.</p>
<p>Seltsam dabei ist allerdings, wenn ich COUNT einfach auf 2048 festlege, läuft alles wie geschmiert, obwohl ja im Endeffekt genauso viel Speicher reserviert wird. Selbst wenn ich COUNT auf 4096 festlege und 4096 mal eine Textur zeichne, läuft das Programm. Zwar nur mit 33FPS (im Debug Mode), aber es läuft...<br />
Ich blick da leider nicht mehr so ganz durch, deswegen hab ich mich ja auch hier registriert <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>
<p>Wäre super, wenn ihr mir helfen könntet <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="😃"
    /><br />
Wenn ihr mehr Code braucht, liefere ich den natürlich gerne nach, allerdings wüsste ich nicht, welcher Teil noch für diese Fehlermeldung relevant sein könnte.</p>
<p>Vielen Dank im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283169</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283169</guid><dc:creator><![CDATA[Xwin7userX]]></dc:creator><pubDate>Thu, 27 Dec 2012 12:42:59 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] std::bad_alloc trotz ausreichendem Speicher on Tue, 25 Dec 2012 17:59:27 GMT]]></title><description><![CDATA[<p>Wenn du in C++ new[] schreibst, dann meinst du eigentlich immer vector. Es gibt keinen Grund auf den Komfort, die Debugmöglichkeiten(!) und die Robustheit gegenüber Programmierfehlern zu verzichten.</p>
<p>Geheimnisvolle Fehler sind oft auf Bereichsüberschreitungsfehler oder ähnliches zurück zu führen, also Fehler die aus Pointergefrickel entstehen und die sich mit obigem Tipp ganz toll vermeiden lassen. Daher setz das erst einmal um. Und falls die Fehler trotzdem noch auftreten, dann kann man die Debugmöglichkeiten des vectors nutzen.</p>
<p>P.S.: Wobei ein vector mit fester Größe auch komisch wäre, du willst vermutlich eher std::array für die innere Datenstruktur. Dafür gilt das gleiche wie für den vector, aber es ist in einer verschachtelten Struktur wesentlich schneller als der vector (und schneller als dein new, da dieses gleich schnell ist wie der vector).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283194</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283194</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 25 Dec 2012 17:59:27 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] std::bad_alloc trotz ausreichendem Speicher on Tue, 25 Dec 2012 18:02:34 GMT]]></title><description><![CDATA[<blockquote>
<p>wenn ich COUNT einfach auf 2048 festlege, läuft alles wie geschmiert, obwohl ja im Endeffekt genauso viel Speicher reserviert wird.</p>
</blockquote>
<p>Im Vergleich zu wenn COUNT auf 1024 festgelegt ist, wie du ja zuvor gesagt hattest? Zweifelhaft <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="😉"
    /><br />
Wenn das keine Konstante ist, dass wird COUNT u.U. einfach nicht [mehr] das enthalten, was du eigentlich glaubst.</p>
<p>Und sonst klingt das alles etwas wirr. Man zeichnet keine Texturen, es ist unklar was deine ganzen Vertexarrays überhaupt sollen (enthalten die irgendwelche sinnvollen Daten oder legst du die rein nach dem Prinzip &quot;mehr ist besser&quot; an?).</p>
<blockquote>
<p>_vcount enthält dabei die Anzahl an aktuell verwendeten Vertex*</p>
</blockquote>
<p>...?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283196</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283196</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Tue, 25 Dec 2012 18:02:34 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] std::bad_alloc trotz ausreichendem Speicher on Tue, 25 Dec 2012 18:15:00 GMT]]></title><description><![CDATA[<p>COUNT ist per #define festgelegt, wäre also sehr seltsam, wenn sich das ändert.<br />
Tut mir Leid, dass der Code etwas schwer zu verstehen ist, ich kenn mich mit der ganzen Materie noch nicht so super aus.</p>
<p>Die ganzen Vertex Arrays haben aber trotzdem einen Grund. Ich versuche bei dem Zeichnen der Texturen mit möglichst wenig Draw Calls auszukommen. Dazu erstelle ich mir Vertex Arrays der Größe 4 * COUNT (4 weil eine Textur nun mal 4 Ecken hat) und wenn eins davon voll ist, wird ein neues erstellt. Es kann ja auch mal vorkommen, dass eine Textur mehr als 1024 mal gezeichnet werden soll (Particle Engine, große TileMap etc.).</p>
<p>Am Ende werden dann alle Vertices, die sich angesammelt haben, gezeichnet. Ich könnte natürlich auch nur ein Vertex* verwenden und per realloc vergrößern, oder einen vector verwenden, aber dann müsste ich den VertexBuffer jedes mal neuerstellen, wenn mehr Vertices dazugekommen sind.</p>
<p>Ich hab mir eben noch einmal den SpriteBatch von ANX (sozusagen das OpenSource XNA) angeschaut, und dort werden die Vertices erst ganz am Ende erstellt, wenn sie gezeichnet werden. Davor werden nur Texturen, Positionen und Farben gespeichert. Vielleicht werde ich mal versuchen das so rum zu implementieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283204</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283204</guid><dc:creator><![CDATA[Xwin7userX]]></dc:creator><pubDate>Tue, 25 Dec 2012 18:15:00 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] std::bad_alloc trotz ausreichendem Speicher on Tue, 25 Dec 2012 18:48:58 GMT]]></title><description><![CDATA[<p>Wenn ich das richtig verstehe, möchtest du also nur 2D-Grafiken rendern.</p>
<blockquote>
<p>So lange ich &quot;nur&quot; 1024 mal eine Textur zeichne, funktioniert alles, <strong>sobald ich aber mehr als 1024 Texturen zeichne</strong></p>
</blockquote>
<p>Wie machst du das, wenn deine Vertexarrays nur Platz für jeweils 1024 Quads bieten?</p>
<blockquote>
<p>oder einen vector verwenden, aber dann müsste ich den VertexBuffer jedes mal neuerstellen, wenn mehr Vertices dazugekommen sind.</p>
</blockquote>
<p>Wie kommst du zu der Aussage? Es zwingt dich niemand, die Größe eines vectors zu verändern, aber im Gegensatz zu C-Arrays sind std::vector und std::array in der Lage out-of-bounds-Zugriffe im Debug-Modus zu erkennen, wie SeppJ ja schon gesagt hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283216</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283216</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Tue, 25 Dec 2012 18:48:58 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] std::bad_alloc trotz ausreichendem Speicher on Tue, 25 Dec 2012 19:21:37 GMT]]></title><description><![CDATA[<p>Wenn die Arrays keinen Platz mehr haben, hab ich eben ein neues erstellt.<br />
Egal, ich habs jetzt so gemacht, dass ich alle Vertices in einen Vector speicher und dann ganz am Ende den Vector sozusagen in Arrays der Größe COUNT aufspalte um die Daten in den VertexBuffer zu kopieren und zu rendern. So funktioniert das nun auch, auch wenn bei 4096 mal eine Textur rendern das Bild blinkt und nur ca. 20FPS auf die Reihe bekommt, während so viele Texturen XNA keinesfalls aus dem Schritt bringen, auch wenn dieses auf C# basiert. Na ja, da werd ich mal noch ein bisschen nach Optimierungen suchen müssen.<br />
Auf jeden Fall mal ein Dankeschön an alle Helfenden hier <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>Nur noch eine klitzekleine Frage:<br />
wenn ich per<br />
for each(pair&lt;ID3D11ShaderResourceView*, vector&lt;Vertex&gt;&gt; p in _textures)<br />
durch eine map&lt;ID3D11ShaderResourceView*, vector&lt;Vertex&gt; durchiteriere, wirft IntelliSense einen Fehler, dass for each den Ausdruck nicht verarbeiten könnte, kompilieren tut es aber wunderbar. Sollte ich trotzdem lieber etwas (meiner Meinung nach unübersichtliches) wie<br />
for(map&lt;ID3D11ShaderResourceView*, vector&lt;Vertex&gt;&gt;::iterator i = _textures.begin(); i != _textures.end(); i++)<br />
verwenden, gibt es da noch eine viel bessere Variante, oder soll ich den Fehler einfach ignorieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283223</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283223</guid><dc:creator><![CDATA[Xwin7userX]]></dc:creator><pubDate>Tue, 25 Dec 2012 19:21:37 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] std::bad_alloc trotz ausreichendem Speicher on Tue, 25 Dec 2012 19:22:07 GMT]]></title><description><![CDATA[<blockquote>
<p>Er hat also eine Größe von 36Bytes.</p>
</blockquote>
<p>Das kann man einfach so sagen? Ist das nicht total maschinenabhängig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283224</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Tue, 25 Dec 2012 19:22:07 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] std::bad_alloc trotz ausreichendem Speicher on Tue, 25 Dec 2012 19:31:14 GMT]]></title><description><![CDATA[<p>Kann sein, ich bin jetzt einfach mal von sizeof(float) = 4 Bytes ausgegangen, kann aber natürlich variieren, im Code verwende ich natürlich immer sizeof(Vertex), die 36 Bytes waren nur zum anschaulich machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283227</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283227</guid><dc:creator><![CDATA[Xwin7userX]]></dc:creator><pubDate>Tue, 25 Dec 2012 19:31:14 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] std::bad_alloc trotz ausreichendem Speicher on Tue, 25 Dec 2012 20:01:30 GMT]]></title><description><![CDATA[<p>Xwin7userX schrieb:</p>
<blockquote>
<p>Nur noch eine klitzekleine Frage:<br />
wenn ich per<br />
for each(pair&lt;ID3D11ShaderResourceView*, vector&lt;Vertex&gt;&gt; p in _textures)<br />
durch eine map&lt;ID3D11ShaderResourceView*, vector&lt;Vertex&gt; durchiteriere, wirft IntelliSense einen Fehler, dass for each den Ausdruck nicht verarbeiten könnte, kompilieren tut es aber wunderbar. Sollte ich trotzdem lieber etwas (meiner Meinung nach unübersichtliches) wie<br />
for(map&lt;ID3D11ShaderResourceView*, vector&lt;Vertex&gt;&gt;::iterator i = _textures.begin(); i != _textures.end(); i++)<br />
verwenden, gibt es da noch eine viel bessere Variante, oder soll ich den Fehler einfach ignorieren?</p>
</blockquote>
<p>for each ist eine nicht standardgemäße Compilererweiterung von MSVC++. Nutz lieber die standardkonforme zweite Variante, std::for_each oder am besten, falls MSVC++ dies inzwischen kann, ein range-based for.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283231</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283231</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 25 Dec 2012 20:01:30 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] std::bad_alloc trotz ausreichendem Speicher on Tue, 25 Dec 2012 22:33:50 GMT]]></title><description><![CDATA[<p>Oder:<br />
<code>map&lt;ID3D11ShaderResourceView*, vector&lt;Vertex&gt;&gt;::iterator</code> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> <code>auto</code></p>
<p>&lt;:xmas2:&gt;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283258</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283258</guid><dc:creator><![CDATA[glühnase]]></dc:creator><pubDate>Tue, 25 Dec 2012 22:33:50 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] std::bad_alloc trotz ausreichendem Speicher on Thu, 27 Dec 2012 14:11:04 GMT]]></title><description><![CDATA[<p>Vielen Dank, ein ranged based for war genau das, was ich gesucht hab (entspricht ja sozusagen dem MS for each). Jetzt wirft IntelliSense auch keinen Error mehr <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>Edit: Also entweder hat MS bei der Implementierung von Ranged Based For ziemlich geschlampt, oder das ist, warum auch immer, immer so unperformant. Denn mit for(auto i : _textures) hab ich bei 4096 * mal eine Textur zeichnen 18FPS, wenn ich for(auto i = _textures.begin(); i != _textures.end(); i++) verwende, bekomme ich 23FPS. Oder kann es sein, dass dadurch, dass _textures im Moment nur eine Länge von 1 hat (ich zeichne ja bisher nur eine Textur) ranged base for noch einen sehr großen OverHead hat, der sich bei größeren Größen von _textures auszahlt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283625</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283625</guid><dc:creator><![CDATA[Xwin7userX]]></dc:creator><pubDate>Thu, 27 Dec 2012 14:11:04 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] std::bad_alloc trotz ausreichendem Speicher on Thu, 27 Dec 2012 15:36:12 GMT]]></title><description><![CDATA[<p>die Textur wird jedes mal kopiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283688</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283688</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Thu, 27 Dec 2012 15:36:12 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] std::bad_alloc trotz ausreichendem Speicher on Thu, 27 Dec 2012 15:49:33 GMT]]></title><description><![CDATA[<pre><code>for(auto &amp;i : _textures)
</code></pre>
<p>ohne das &amp; iteriert er by value, bzw erstellt eine Kopie und arbeitet damit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283689</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283689</guid><dc:creator><![CDATA[kleiner Troll]]></dc:creator><pubDate>Thu, 27 Dec 2012 15:49:33 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] std::bad_alloc trotz ausreichendem Speicher on Thu, 27 Dec 2012 16:01:35 GMT]]></title><description><![CDATA[<p>Wunderbar, jetzt läuft das so auch mit 23FPS <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="😃"
    /><br />
Vielen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283692</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283692</guid><dc:creator><![CDATA[Xwin7userX]]></dc:creator><pubDate>Thu, 27 Dec 2012 16:01:35 GMT</pubDate></item></channel></rss>