<?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[array zu groß?]]></title><description><![CDATA[<p>hallo zusammen!<br />
ich programmiere grade ein projekt, und bin dabei auf folgendes problem gestoßen:<br />
beim erstellen eines feldes mit größe mehr als 500x500, stürzt in windows das programm ab und unter linux kommt die meldung: segmentation fault.</p>
<p>also in kurzversion das problem:</p>
<p>#include &lt;iostream&gt;<br />
using namespace std;<br />
int main(){<br />
cout &lt;&lt; &quot;let's declare a field!&quot; &lt;&lt; endl;<br />
double H[600][600];<br />
cout &lt;&lt; &quot;field created successfully!&quot; &lt;&lt; endl;<br />
system(&quot;pause&quot;);<br />
}</p>
<p>das system(&quot;pause&quot;) muss man sich in linux wegdenken.<br />
vielleicht läuft es ja bei euch!<br />
ich kann das fehlerfrei compilen, aber in der runtime gibts eben den fehler.<br />
also zu groß für den speicher kann doch so ein feld auf keinen fall sein oder? hat jemand eine idee wie das beheben kann?</p>
<p>vielen dank schonmal für rückmeldungen!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/272171/array-zu-groß</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 01:03:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/272171.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 11 Aug 2010 23:17:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to array zu groß? on Wed, 11 Aug 2010 23:17:21 GMT]]></title><description><![CDATA[<p>hallo zusammen!<br />
ich programmiere grade ein projekt, und bin dabei auf folgendes problem gestoßen:<br />
beim erstellen eines feldes mit größe mehr als 500x500, stürzt in windows das programm ab und unter linux kommt die meldung: segmentation fault.</p>
<p>also in kurzversion das problem:</p>
<p>#include &lt;iostream&gt;<br />
using namespace std;<br />
int main(){<br />
cout &lt;&lt; &quot;let's declare a field!&quot; &lt;&lt; endl;<br />
double H[600][600];<br />
cout &lt;&lt; &quot;field created successfully!&quot; &lt;&lt; endl;<br />
system(&quot;pause&quot;);<br />
}</p>
<p>das system(&quot;pause&quot;) muss man sich in linux wegdenken.<br />
vielleicht läuft es ja bei euch!<br />
ich kann das fehlerfrei compilen, aber in der runtime gibts eben den fehler.<br />
also zu groß für den speicher kann doch so ein feld auf keinen fall sein oder? hat jemand eine idee wie das beheben kann?</p>
<p>vielen dank schonmal für rückmeldungen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1938962</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1938962</guid><dc:creator><![CDATA[meatcpp]]></dc:creator><pubDate>Wed, 11 Aug 2010 23:17:21 GMT</pubDate></item><item><title><![CDATA[Reply to array zu groß? on Wed, 11 Aug 2010 23:20:54 GMT]]></title><description><![CDATA[<p>500*500*double=2 Megabyte, das ist zu viel für den Stack.<br />
Mit new klappt das aber.<br />
Hat aber ne komische Syntax. AFAIR stehen Beispiele in den FAQ.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1938963</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1938963</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 11 Aug 2010 23:20:54 GMT</pubDate></item><item><title><![CDATA[Reply to array zu groß? on Wed, 11 Aug 2010 23:58:18 GMT]]></title><description><![CDATA[<p>Mit doubles ist das im Zweifel sogar noch mehr.</p>
<p>Arrays dieser Größe packt man, wie volkard schon erwähnte, auf den Heap, um genau diese Problematik zu umgehen. Ein flaches new[] hat aber den Nachteil, dass man von Hand wieder aufräumen muss, was im Zusammenhang mit Exceptionsicherheit etwas unschön ist. Du solltest dir mindestens einen RAII-Container oder einen Aufräumer auf den Stack legen, etwa</p>
<pre><code class="language-cpp">template&lt;typename pointer_t&gt;
class array_cleaner {
public:
  array_cleaner(pointer_t ptr) : ptr_(ptr) { }
  ~array_cleaner() { delete[] ptr_; }

private:
  pointer_t ptr_;
};

int main() {
  double (*array)[600];
  array_cleaner&lt;double(*)[600]&gt; cleaner(array = new double[600][600]);
}
</code></pre>
<p>Allerdings ist das eine etwas hingerotzte Lösung. Schau dir mal <a href="http://www.boost.org/doc/libs/1_43_0/libs/multi_array/doc/user.html" rel="nofollow">Boost.Multi-Array</a> an, das ist für so was prädestiniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1938965</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1938965</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Wed, 11 Aug 2010 23:58:18 GMT</pubDate></item><item><title><![CDATA[Reply to array zu groß? on Thu, 12 Aug 2010 00:51:19 GMT]]></title><description><![CDATA[<p>ok ich glaube das wird mein problem lösen. vielen dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1938966</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1938966</guid><dc:creator><![CDATA[meatcpp]]></dc:creator><pubDate>Thu, 12 Aug 2010 00:51:19 GMT</pubDate></item></channel></rss>