<?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[Stack-Größenproblem umgehen]]></title><description><![CDATA[<p>Ich hab gelesen, dass der Stack in C++ begrenzt ist. Stimmt das? Wenn ja, wieso macht man nicht einfach sowas hier:</p>
<pre><code class="language-cpp">class Global
{
    int Main()
    {
        // Hier kommt alles rein, was sonst in die main kommt, z.B.
        int x = 5;
        cout &lt;&lt; x;

        return 0;
    }
};

int main()
{
    Global *global = new Global();

    int returnValue = global-&gt;Main();

    delete global;

    return returnValue;
}
</code></pre>
<p>Dann hätte man alles (z.B. die Variable x) auf dem Heap, kann die Variablen aber trotzdem so deklarieren, als wären sie auf dem Stack, ohne sich Sorgen zu machen, dass der Stack überläuft und ohne new und delete nur deshalb zu benutzen, weil sonst der Stack überlaufen könnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/264836/stack-größenproblem-umgehen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 04 Sep 2026 13:20:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/264836.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 13 Apr 2010 16:26:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Stack-Größenproblem umgehen on Tue, 13 Apr 2010 16:26:50 GMT]]></title><description><![CDATA[<p>Ich hab gelesen, dass der Stack in C++ begrenzt ist. Stimmt das? Wenn ja, wieso macht man nicht einfach sowas hier:</p>
<pre><code class="language-cpp">class Global
{
    int Main()
    {
        // Hier kommt alles rein, was sonst in die main kommt, z.B.
        int x = 5;
        cout &lt;&lt; x;

        return 0;
    }
};

int main()
{
    Global *global = new Global();

    int returnValue = global-&gt;Main();

    delete global;

    return returnValue;
}
</code></pre>
<p>Dann hätte man alles (z.B. die Variable x) auf dem Heap, kann die Variablen aber trotzdem so deklarieren, als wären sie auf dem Stack, ohne sich Sorgen zu machen, dass der Stack überläuft und ohne new und delete nur deshalb zu benutzen, weil sonst der Stack überlaufen könnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1882269</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1882269</guid><dc:creator><![CDATA[Stack-enpferd]]></dc:creator><pubDate>Tue, 13 Apr 2010 16:26:50 GMT</pubDate></item><item><title><![CDATA[Reply to Stack-Größenproblem umgehen on Tue, 13 Apr 2010 16:29:55 GMT]]></title><description><![CDATA[<p>Der Stack ist schneller als der Heap.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1882271</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1882271</guid><dc:creator><![CDATA[noobLolo]]></dc:creator><pubDate>Tue, 13 Apr 2010 16:29:55 GMT</pubDate></item><item><title><![CDATA[Reply to Stack-Größenproblem umgehen on Tue, 13 Apr 2010 16:30:32 GMT]]></title><description><![CDATA[<p>Der Stack ist groß genug und dein Vorgehen vollkommen überflüssig. Bei Rekursionen kann es vorkommen, dass der Stack voll ist, aber ansonsten gibt es dort keine Probleme.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1882273</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1882273</guid><dc:creator><![CDATA[hjkhjk]]></dc:creator><pubDate>Tue, 13 Apr 2010 16:30:32 GMT</pubDate></item><item><title><![CDATA[Reply to Stack-Größenproblem umgehen on Tue, 13 Apr 2010 16:33:04 GMT]]></title><description><![CDATA[<p>Stack-enpferd schrieb:</p>
<blockquote>
<p>Ich hab gelesen, dass der Stack in C++ begrenzt ist. Stimmt das?</p>
</blockquote>
<p>Natürlich. Auch der Heap/Freestore ist begrenzt.</p>
<p>Stack-enpferd schrieb:</p>
<blockquote>
<p>Wenn ja, wieso macht man nicht einfach sowas hier</p>
</blockquote>
<p>Weil es nichts bringt. Die Variable <code>x</code> befindet sich nicht auf dem Heap. Memberfunktionen werden nicht auf dem Heap angelegt.</p>
<p>Und das &quot;Problem&quot; der begrenzten Stackgrösse ist nicht so allgegenwärtig, wie du vielleicht meinst. Sehr oft benutzen Klassen, die grössere Speichermengen benötigen, von selbst dynamischen Speicher – z.B. STL-Container. Und ansonsten forderst du grosse Objekte eben dynamisch an, am besten mit RAII.</p>
<p>Die Stackgrösse wird eher kritisch, wenn du sehr tiefe Rekursionen von Funktionsaufrufen hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1882274</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1882274</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 13 Apr 2010 16:33:04 GMT</pubDate></item><item><title><![CDATA[Reply to Stack-Größenproblem umgehen on Tue, 13 Apr 2010 17:00:18 GMT]]></title><description><![CDATA[<p>Vielleicht noch eine Bemerkung am Rande:<br />
Auch wenn es tiefe Rekursionen gibt, kann man, wenn die Gefahr eines Stack-Overflow gegeben ist, Die Größe des Stacks bei den Linker-Optionen Anpassen. Der Hauptgrund, dass der Stackspeicher auf 1 MB begrenzt ist der, dass Endlosrekursionen abgebrochen werden.</p>
<p>MfG, Jochen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1882305</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1882305</guid><dc:creator><![CDATA[Jochen S.]]></dc:creator><pubDate>Tue, 13 Apr 2010 17:00:18 GMT</pubDate></item><item><title><![CDATA[Reply to Stack-Größenproblem umgehen on Tue, 13 Apr 2010 17:10:40 GMT]]></title><description><![CDATA[<p>Das stimmt zwar, aber das Problem, dass tiefe Rekursionen gefährlich sind, bleibt weiterhin. Zumal es im C++-Standard keine Linkeroptionen gibt und man sich nicht auf solche Einstellungen verlassen sollte, falls man portabel programmieren möchte.</p>
<p>Davon abgesehen verlagert sich das Problem oft nur. Wenn man auf die Idee kommen sollte, im Destruktor einer verketteten Liste rekursiv andere Destruktoren aufzurufen, darf man bei 2MB nun eben mehr Elemente anhängen, bis das Programm abstürzt. Keine besonders gute Lösung. Bei Algorithmen wie Baumdurchsuchungen mit O(log n) stellt sich das Problem hingegen auch bei 1MB Stack nicht, und man gewinnt wieder nichts durch die Stackvergrösserung.</p>
<p>Die Situationen, wo man tatsächlich einen grösseren Stack benötigt, sind recht selten. Oft kann man durch bessere Programmierung mehr bewirken. Nicht zuletzt sollte man auch Datenstrukturen wie <code>std::stack</code> in Erwägung ziehen, um gefährliche Rekursionen zu umgehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1882308</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1882308</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 13 Apr 2010 17:10:40 GMT</pubDate></item><item><title><![CDATA[Reply to Stack-Größenproblem umgehen on Tue, 13 Apr 2010 21:19:38 GMT]]></title><description><![CDATA[<p>Rekursionen sind nicht gefährlich, nur der Stack-Overflow. Sofern man weiß, dass der Algorithmus nicht in einen Stack-Overflow laufen kann ist alles bestens.</p>
<p>Und Rekursionen sind meist übersichtlicher und schneller programmiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1882410</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1882410</guid><dc:creator><![CDATA[einint]]></dc:creator><pubDate>Tue, 13 Apr 2010 21:19:38 GMT</pubDate></item><item><title><![CDATA[Reply to Stack-Größenproblem umgehen on Tue, 13 Apr 2010 21:24:14 GMT]]></title><description><![CDATA[<p>einint schrieb:</p>
<blockquote>
<p>Rekursionen sind nicht gefährlich, nur der Stack-Overflow. Sofern man weiß, dass der Algorithmus nicht in einen Stack-Overflow laufen kann ist alles bestens.</p>
</blockquote>
<p>Tiefe, nicht gut voraussehbare Rekursionen sind gerade <em>wegen</em> des Stack-Overflows potenziell gefährlich. Natürlich nicht alle Rekursionen, ich habe ja selbst ein Gegenbeispiel gebracht.</p>
<p>einint schrieb:</p>
<blockquote>
<p>Und Rekursionen sind meist übersichtlicher und schneller programmiert.</p>
</blockquote>
<p>Was aber nicht heisst, dass sie generell vorzuziehen sind. Aber falscher Einsatz von Rekursionen zum Glück keines der Verbrechen, das in C++ allzu oft begangen wird (zumindest verglichen mit gewissen anderen Dingen). <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/1882412</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1882412</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 13 Apr 2010 21:24:14 GMT</pubDate></item><item><title><![CDATA[Reply to Stack-Größenproblem umgehen on Tue, 13 Apr 2010 21:46:59 GMT]]></title><description><![CDATA[<p>Rekursion ist oft nicht wirklich die besste Lösung. Die eleganteste, einfachste, logischere ja, aber (und darauf kommt es halt bei vielen Algorithmen an) oftmals langsamer, als die iterative Variante.</p>
<p>Einen hybriden Ansatz, wie bei gewissen Implementierungen von Quicksort ist manchmal aber auch schon ganz passabel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1882421</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1882421</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 13 Apr 2010 21:46:59 GMT</pubDate></item></channel></rss>