<?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[Unmöglicher Segmentation Fault]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich brauche dringend Hilfe. Folgendes Programm gibt mir einen Segmentation Fault:</p>
<pre><code class="language-cpp">#include&lt;string&gt;
int main()
{
        N=2028;
        double b[N][N];
        std::string name;
}
</code></pre>
<p>Falls ich N viel kleiner wähle (z.B. N=10) ist alles in Ordnung.<br />
Das ist doch eigentlich nicht möglich, oder?!</p>
<p>Ich habe es mit 4 verschiedenen Rechnern und mehreren Versionen des g++ Compilers versucht. So wie's aussieht tritt der Fehler nur bei Ubuntu und Debian auf. Bei Suse nicht.</p>
<p>Vielen Dank.</p>
<p>Tobias</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/181714/unmöglicher-segmentation-fault</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 16:35:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/181714.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 16 May 2007 14:02:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Unmöglicher Segmentation Fault on Wed, 16 May 2007 14:02:56 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich brauche dringend Hilfe. Folgendes Programm gibt mir einen Segmentation Fault:</p>
<pre><code class="language-cpp">#include&lt;string&gt;
int main()
{
        N=2028;
        double b[N][N];
        std::string name;
}
</code></pre>
<p>Falls ich N viel kleiner wähle (z.B. N=10) ist alles in Ordnung.<br />
Das ist doch eigentlich nicht möglich, oder?!</p>
<p>Ich habe es mit 4 verschiedenen Rechnern und mehreren Versionen des g++ Compilers versucht. So wie's aussieht tritt der Fehler nur bei Ubuntu und Debian auf. Bei Suse nicht.</p>
<p>Vielen Dank.</p>
<p>Tobias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1286214</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1286214</guid><dc:creator><![CDATA[TobiasStollenwerk]]></dc:creator><pubDate>Wed, 16 May 2007 14:02:56 GMT</pubDate></item><item><title><![CDATA[Reply to Unmöglicher Segmentation Fault on Wed, 16 May 2007 14:10:45 GMT]]></title><description><![CDATA[<p>was ist <strong>N</strong>??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1286222</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1286222</guid><dc:creator><![CDATA[kaffee]]></dc:creator><pubDate>Wed, 16 May 2007 14:10:45 GMT</pubDate></item><item><title><![CDATA[Reply to Unmöglicher Segmentation Fault on Wed, 16 May 2007 14:14:48 GMT]]></title><description><![CDATA[<p>kaffee schrieb:</p>
<blockquote>
<p>was ist <strong>N</strong>??</p>
</blockquote>
<p>Viel zu groß.</p>
<p>TobiasStollenwerk, dein Array passt nicht auf den Stack.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1286225</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1286225</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Wed, 16 May 2007 14:14:48 GMT</pubDate></item><item><title><![CDATA[Reply to Unmöglicher Segmentation Fault on Wed, 16 May 2007 14:15:29 GMT]]></title><description><![CDATA[<p>naja, dein zweidimensionales Array ist ja nicht gerade klein. 2028*2028*8 Byte sind mal eben schlappe 32 MB - da koennte dir die Speicherverwaltung dann doch in die Suppe spcuken, wenn du so viel Stack auf einmal beanspruchst...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1286226</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1286226</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 16 May 2007 14:15:29 GMT</pubDate></item><item><title><![CDATA[Reply to Unmöglicher Segmentation Fault on Wed, 16 May 2007 14:34:16 GMT]]></title><description><![CDATA[<p>Sorry es heißt natürlich:</p>
<pre><code class="language-cpp">#include&lt;string&gt;
int main()
{
        int N=2028;
        double b[N][N];
        std::string name;
}
</code></pre>
<p>Erstmal danke für die Antworten.<br />
Ich weiss zwar nicht was ein &quot;Stack&quot; ist, aber ich denke mal, dass ich das Problem mit mit Speicher allokieren lösen kann, oder?</p>
<p>Falls ja, wie mach ich das genau? Ich brauche nämlich eigentlich ein 4-Dimensionales array:</p>
<pre><code class="language-cpp">#include&lt;string&gt;
int main()
{
        int N=16;
        double b[N][N][N][N];
        std::string name;
}
</code></pre>
<p>Und Außerdem, warum funktioniert es dann bei kleinen N? Dort habe ich ja auch keinen Speicher allokiert.</p>
<p>Tobias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1286234</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1286234</guid><dc:creator><![CDATA[TobiasStollenwerk]]></dc:creator><pubDate>Wed, 16 May 2007 14:34:16 GMT</pubDate></item><item><title><![CDATA[Reply to Unmöglicher Segmentation Fault on Wed, 16 May 2007 14:49:22 GMT]]></title><description><![CDATA[<p>Ah ich hab's:</p>
<pre><code class="language-cpp">#include&lt;string&gt;
#include&lt;iostream&gt;
int main()
{
        int N=16;
        double**** bl = new double*** [N];
        for (int i=0; i!=N; i++)
        {
                bl[i]=new double**[N];
        }

        for (int i=0; i!=N; i++)
        {
                for (int j=0; j!=N; j++)
                {
                        bl[i][j] = new double*[N];
                }
        }

        for (int i=0; i!=N; i++)
        {
                for (int j=0; j!=N; j++)
                {
                        for (int k=0; k!=N; k++)
                        {
                                bl[i][j][k]=new double;
                        }
                }
        }
}
</code></pre>
<p>Aber warum es für kleine N auch so geht weiss ich immer noch nicht...</p>
<p>Vielen Dank!!!</p>
<p>Tobi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1286253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1286253</guid><dc:creator><![CDATA[TobiasStollenwerk]]></dc:creator><pubDate>Wed, 16 May 2007 14:49:22 GMT</pubDate></item><item><title><![CDATA[Reply to Unmöglicher Segmentation Fault on Wed, 16 May 2007 14:53:50 GMT]]></title><description><![CDATA[<p>Der Stack ist der Ort an dem sämmtliche Variablen liegen die du nicht mit new erstellt hast. (jedenfalls so ähnlich)</p>
<p>Und ja du könntest das wohl per dynamische allokation lösen:</p>
<pre><code class="language-cpp">int main()
{
    double * d = new double[2048][2048];
}
</code></pre>
<p>Allersings musst du dich dann auch manuell um die freigabe kümmern. Du kannst auch vector verwenden:</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
int main()
{
    std::vector&lt;std::vector&lt;double&gt; &gt; vec;
}
</code></pre>
<p>Mit dem Vorteil dass dieser eine dynamische Größe hat und sich selbst um die freigabe kümmert.</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
int main()
{
    std::vector&lt; std::vector&lt; std::vector&lt; std::vector&lt;double&gt; &gt; &gt; &gt; vec;
}
</code></pre>
<p>für das 4D-Array. allerdings währe dann hier wohl die frage ob man nicht mit weniger dimensionen auskommt.</p>
<p>EDIT://<br />
Das erste kompilert irgendwie nicht. Muss irgendwie anders sein</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1286255</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1286255</guid><dc:creator><![CDATA[darthdespotism]]></dc:creator><pubDate>Wed, 16 May 2007 14:53:50 GMT</pubDate></item><item><title><![CDATA[Reply to Unmöglicher Segmentation Fault on Wed, 16 May 2007 14:53:40 GMT]]></title><description><![CDATA[<p>TobiasStollenwerk schrieb:</p>
<blockquote>
<p>Und Außerdem, warum funktioniert es dann bei kleinen N? Dort habe ich ja auch keinen Speicher allokiert.</p>
</blockquote>
<p>es sind immer N*N*8 Bytes. Also bei N=10 nur 10*10*8 während bei N = 2028 2028*2028*8 Bytes</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1286261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1286261</guid><dc:creator><![CDATA[kaffee]]></dc:creator><pubDate>Wed, 16 May 2007 14:53:40 GMT</pubDate></item><item><title><![CDATA[Reply to Unmöglicher Segmentation Fault on Wed, 16 May 2007 21:58:33 GMT]]></title><description><![CDATA[<p><a href="http://de.wikipedia.org/wiki/Stapelspeicher" rel="nofollow">http://de.wikipedia.org/wiki/Stapelspeicher</a><br />
<a href="http://tutorial.schornboeck.net/stack_heap.htm" rel="nofollow">http://tutorial.schornboeck.net/stack_heap.htm</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1286543</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1286543</guid><dc:creator><![CDATA[Bollwerk]]></dc:creator><pubDate>Wed, 16 May 2007 21:58:33 GMT</pubDate></item><item><title><![CDATA[Reply to Unmöglicher Segmentation Fault on Thu, 17 May 2007 13:39:32 GMT]]></title><description><![CDATA[<p>Was willst Du eigentlich modellieren?</p>
<p>|C^2 oder |R^4?</p>
<p>Soll N später zur Laufzeit festzulegen sein?</p>
<p>Falls nicht kannst Du Dir die Sache vielleicht einfache machen indem Du N und b vor main, also global, deklarierst. Mit mingw konnte ich sowohl Deinen Fehler reproduzieren als auch mittels der globalen Deklaration abstellen.<br />
Dann kan der Compiler die Variable besser plazieren (vereinfacht gesagt); und Du erspart Dir viel Code und &quot;double****&quot;.</p>
<p>Grüsse</p>
<p>*this</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1286792</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1286792</guid><dc:creator><![CDATA[Gast++]]></dc:creator><pubDate>Thu, 17 May 2007 13:39:32 GMT</pubDate></item><item><title><![CDATA[Reply to Unmöglicher Segmentation Fault on Thu, 17 May 2007 14:01:59 GMT]]></title><description><![CDATA[<p>darthdespotism schrieb:</p>
<blockquote>
<p>Das erste kompilert irgendwie nicht. Muss irgendwie anders sein</p>
</blockquote>
<p>Ein new[][] gibt es auch nicht <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1286801</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1286801</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 17 May 2007 14:01:59 GMT</pubDate></item><item><title><![CDATA[Reply to Unmöglicher Segmentation Fault on Thu, 17 May 2007 15:33:39 GMT]]></title><description><![CDATA[<p>KasF schrieb:</p>
<blockquote>
<p>darthdespotism schrieb:</p>
<blockquote>
<p>Das erste kompilert irgendwie nicht. Muss irgendwie anders sein</p>
</blockquote>
<p>Ein new[][] gibt es auch nicht <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>
</blockquote>
<p>braucht er auch nicht:</p>
<pre><code class="language-cpp">double (*d)[2048] = new double[2048][2048];
</code></pre>
<p>mit typedef wird deutlich, warum:</p>
<pre><code class="language-cpp">typedef double T[2048];
T* d = new T[2048];
</code></pre>
<p>ist völlig äquivalent</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1286863</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1286863</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 17 May 2007 15:33:39 GMT</pubDate></item><item><title><![CDATA[Reply to Unmöglicher Segmentation Fault on Thu, 14 Jun 2007 14:34:45 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/15778">@Gast</a>++: N wird erst zur Laufzeit festgelegt.<br />
<a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/15276">@darthdespotism</a>: Vector kann ich leider für meine Zwecke nicht benutzen, weil ich das 2-D Array der HDF5 Library übergeben will. Diese kennt aber kein vector.</p>
<p>Ich werde wohl mit new arbeiten müssen...</p>
<p>Nochmal Vielen Dank an alle.</p>
<p>Tobias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1305770</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1305770</guid><dc:creator><![CDATA[TobiasStollenwerk]]></dc:creator><pubDate>Thu, 14 Jun 2007 14:34:45 GMT</pubDate></item><item><title><![CDATA[Reply to Unmöglicher Segmentation Fault on Thu, 14 Jun 2007 21:51:02 GMT]]></title><description><![CDATA[<p>Ich verstehen nicht wo das Problem ist?<br />
Nimm std::vector. Die HDF5 Library wird wohl ziemlich sicher mit einem zusammenhängenden Array arbeiten, also eben so wie du es bekommst wenn du</p>
<pre><code class="language-cpp">double a[10][20];
</code></pre>
<p>schreibst. Wenn das geht geht es mit std::vector auch:</p>
<pre><code class="language-cpp">...
{
    std::vector&lt;double&gt; a(10*20);
    irgendwas(&amp;(a[0]), 10, 20);
}
</code></pre>
<p>Also einer von uns beiden steht zumindest auf der Leitung...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1306146</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1306146</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 14 Jun 2007 21:51:02 GMT</pubDate></item></channel></rss>