<?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[STL-Vector, Fehler beim belegen von 2GB Arbeitsspeicher?]]></title><description><![CDATA[<p>Hallo,<br />
ich habe eine Matrix, die unter umständen recht groß wird (~2.5GB). Dummerweise bekomme ich schon beim belegen von 1.8GB (Rechner hat 2GB RAM) folgende Meldung:<br />
<em>&quot;This application has requested the Runtime to terminate it in an unusual way.&quot;</em></p>
<p>Folgendes Beispiel liefert den selben Fehler:</p>
<pre><code class="language-cpp">vector&lt;vector&lt;float &gt; &gt; testMatrix;
testMatrix.resize(30000);

for (int row=0; row &lt; 30000; row++) {
	testMatrix[row].resize(25000);
	for (int col=0; col &lt; 25000; col++) {
		// do something..
		testMatrix[row][col] = 0;
	}
	cout &lt;&lt; &quot;Size in MB: &quot; &lt;&lt; row*25000*sizeof(float)/1024 &lt;&lt; endl;
}
cout &lt;&lt; &quot; SUCCESSFULL &quot; &lt;&lt; endl;
</code></pre>
<p>Woher kommt das Problem? ist das ein STL-Fehler? Lässt es sich umgehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/141708/stl-vector-fehler-beim-belegen-von-2gb-arbeitsspeicher</link><generator>RSS for Node</generator><lastBuildDate>Mon, 31 Aug 2026 14:17:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/141708.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 24 Mar 2006 11:56:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to STL-Vector, Fehler beim belegen von 2GB Arbeitsspeicher? on Fri, 24 Mar 2006 11:56:39 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe eine Matrix, die unter umständen recht groß wird (~2.5GB). Dummerweise bekomme ich schon beim belegen von 1.8GB (Rechner hat 2GB RAM) folgende Meldung:<br />
<em>&quot;This application has requested the Runtime to terminate it in an unusual way.&quot;</em></p>
<p>Folgendes Beispiel liefert den selben Fehler:</p>
<pre><code class="language-cpp">vector&lt;vector&lt;float &gt; &gt; testMatrix;
testMatrix.resize(30000);

for (int row=0; row &lt; 30000; row++) {
	testMatrix[row].resize(25000);
	for (int col=0; col &lt; 25000; col++) {
		// do something..
		testMatrix[row][col] = 0;
	}
	cout &lt;&lt; &quot;Size in MB: &quot; &lt;&lt; row*25000*sizeof(float)/1024 &lt;&lt; endl;
}
cout &lt;&lt; &quot; SUCCESSFULL &quot; &lt;&lt; endl;
</code></pre>
<p>Woher kommt das Problem? ist das ein STL-Fehler? Lässt es sich umgehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1022999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1022999</guid><dc:creator><![CDATA[StefanXP]]></dc:creator><pubDate>Fri, 24 Mar 2006 11:56:39 GMT</pubDate></item><item><title><![CDATA[Reply to STL-Vector, Fehler beim belegen von 2GB Arbeitsspeicher? on Fri, 24 Mar 2006 12:00:42 GMT]]></title><description><![CDATA[<p>Bei 2 GB stößt Du an die 32-Bit-Grenze. Wahrscheinlich wirst Du Probleme haben, mit einem 32-Bit-Programm überhaupt mehr als 2 GB zu adressieren. Bei solchen grössen solltest Du Dir Gedanken über ein 64-Bit-System machen.</p>
<p>Tommi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1023006</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1023006</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Fri, 24 Mar 2006 12:00:42 GMT</pubDate></item><item><title><![CDATA[Reply to STL-Vector, Fehler beim belegen von 2GB Arbeitsspeicher? on Fri, 24 Mar 2006 12:07:24 GMT]]></title><description><![CDATA[<p>2 GB - 1,8 GB = 200 MB</p>
<p>Belegt dein OS nicht schon so knapp 200 MB? Außerdem, fang doch mal vernünftigerweise Exceptions ab, dann weiß du auch was schief gelaufen ist. Das die Leute das nicht lernen... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<pre><code class="language-cpp">vector&lt;vector&lt;float &gt; &gt; testMatrix;
testMatrix.resize(30000);

for (int row=0; row &lt; 30000; row++) {
    try
    {
         testMatrix[row].resize(25000);
         for (int col=0; col &lt; 25000; col++) {
            // do something..
            testMatrix[row][col] = 0;
         }
         cout &lt;&lt; &quot;Size in MB: &quot; &lt;&lt; row*25000*sizeof(float)/1024 &lt;&lt; endl;
    }
    catch(const std::exception &amp;ex)
    {
       std::err &lt;&lt; ex.what() &lt;&lt; std::endl;
    }
}
cout &lt;&lt; &quot; SUCCESSFULL &quot; &lt;&lt; endl;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1023008</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1023008</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Fri, 24 Mar 2006 12:07:24 GMT</pubDate></item><item><title><![CDATA[Reply to STL-Vector, Fehler beim belegen von 2GB Arbeitsspeicher? on Fri, 24 Mar 2006 12:04:44 GMT]]></title><description><![CDATA[<p>Ich denke bei der Marge ist es nur natürlich dass das Programm baden geht. Die Berechnung wird man wohl aufteilen müssen.</p>
<p>a) braucht das Betriebssystem und andere Progs auch noch Speicher (200 MB halte ich für knapp)<br />
b) bringt jeder vector&lt;float&gt; selbst noch etwas Overhead mit</p>
<p>Hm...</p>
<p>c) Sind für mich z.B. 30000 * 25000 * 4Bytes schon 2,8 GB <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>Und, ist nicht der virtuelle Adressraum bei 32-Bit und ohne PAE eh auf 2 GB begrenzt?</p>
<p>EDIT: Sooo viele (unbefriedigende) Antworten in sooo kurzer Zeit <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="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1023009</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1023009</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 24 Mar 2006 12:04:44 GMT</pubDate></item><item><title><![CDATA[Reply to STL-Vector, Fehler beim belegen von 2GB Arbeitsspeicher? on Fri, 24 Mar 2006 13:05:29 GMT]]></title><description><![CDATA[<p>danke für die Antworten!!</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/1463">@Artchi</a>: *an hirn schlag* stimmt! hatte ich ganz vergessen. Die Exception lautet erwartungsgemäß &quot;<em>bad allocation</em>&quot;.</p>
<p>a) &amp; b) der overhead scheint sehr gering zu sein, denn der Taskmanager zeigt 2.25GB und vor dem programmstart waren 450MB belegt.<br />
c) richtig, 2.8 sollten eigentlich möglich sein.</p>
<p>Das mit den 32-Bit hab ich mir auch schon überlegt... werd mich mal schlau machen ob da wirklich nicht mehr geht. Und was ist PAE?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1023066</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1023066</guid><dc:creator><![CDATA[StefanXP]]></dc:creator><pubDate>Fri, 24 Mar 2006 13:05:29 GMT</pubDate></item><item><title><![CDATA[Reply to STL-Vector, Fehler beim belegen von 2GB Arbeitsspeicher? on Fri, 24 Mar 2006 13:17:39 GMT]]></title><description><![CDATA[<p>PAE heisst Physical Adress Extension und ist eine (ziemlich teure <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="😉"
    /> ) Windows-Erweiterung die 48-Bit Adressraum (glaube ich) auf 32-Bit Windows ermöglicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1023079</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1023079</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 24 Mar 2006 13:17:39 GMT</pubDate></item><item><title><![CDATA[Reply to STL-Vector, Fehler beim belegen von 2GB Arbeitsspeicher? on Fri, 24 Mar 2006 14:08:14 GMT]]></title><description><![CDATA[<blockquote>
<p>Bei 2 GB stößt Du an die 32-Bit-Grenze.</p>
</blockquote>
<p>Die 32-Bit-Grenze ist bei 4 GB. Die 2 GB-Grenze bei 32-Bit-Systemen wie z.B. Windows hat einen anderen Grund. S.u.</p>
<blockquote>
<p>c) richtig, 2.8 sollten eigentlich möglich sein.</p>
</blockquote>
<p>Aber nicht unter einem 32-bit Windows. Dort ist jeder Prozess auf maximal 2 GB beschränkt (die oberen 2 GB gehören dem BS, welches diese z.B. für Shared-DLLs usw. benutzt). Zumindest in der Default-Einstellung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1023128</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1023128</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Fri, 24 Mar 2006 14:08:14 GMT</pubDate></item></channel></rss>