<?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[C++ : wann Stack, wann Heap]]></title><description><![CDATA[<p>hallo</p>
<p>wann sollte man ein Objekt auf dem Heap anlegen, wann auf dem Stack? Sollte man immer, wenn man es auf dem Stack anlegen kann, auch dort machen? (und sonst keine Probleme mit den Eigenschaft des einen oder anderen hat)</p>
<p>Habe auch mal irgendwo gelesen, daß Stackoperation schneller seinen sollen. Soll man den eher den Stack benutzen, um ein new zu sparen; oder gibt es andere Gründe? danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/209261/c-wann-stack-wann-heap</link><generator>RSS for Node</generator><lastBuildDate>Mon, 12 Oct 2026 13:34:14 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/209261.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 28 Mar 2008 12:36:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to C++ : wann Stack, wann Heap on Fri, 28 Mar 2008 12:36:31 GMT]]></title><description><![CDATA[<p>hallo</p>
<p>wann sollte man ein Objekt auf dem Heap anlegen, wann auf dem Stack? Sollte man immer, wenn man es auf dem Stack anlegen kann, auch dort machen? (und sonst keine Probleme mit den Eigenschaft des einen oder anderen hat)</p>
<p>Habe auch mal irgendwo gelesen, daß Stackoperation schneller seinen sollen. Soll man den eher den Stack benutzen, um ein new zu sparen; oder gibt es andere Gründe? danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1482083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1482083</guid><dc:creator><![CDATA[hallohallo]]></dc:creator><pubDate>Fri, 28 Mar 2008 12:36:31 GMT</pubDate></item><item><title><![CDATA[Reply to C++ : wann Stack, wann Heap on Fri, 28 Mar 2008 12:50:08 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ja der Stack ist in der Regel schneller als der Heap. Es gibt aber gute Gründe für den Heap :<br />
- Die Größe des Stacks ist sehr begrenzt, insbesondere Arrays sind im Heap besser aufgehoben<br />
- Auf dem Stack haben alle Instanzen eine genau definierte Gültigkeit. Wenn eine Instanz den Scope überleben können soll hilft nur der Heap</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1482093</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1482093</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Fri, 28 Mar 2008 12:50:08 GMT</pubDate></item><item><title><![CDATA[Reply to C++ : wann Stack, wann Heap on Fri, 28 Mar 2008 14:06:24 GMT]]></title><description><![CDATA[<p>Polymorphie ist mit auf dem Stack abgelegten Objekten nicht möglich, da muss man auf dem Heap erzeugen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1482168</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1482168</guid><dc:creator><![CDATA[mikey]]></dc:creator><pubDate>Fri, 28 Mar 2008 14:06:24 GMT</pubDate></item><item><title><![CDATA[Reply to C++ : wann Stack, wann Heap on Fri, 28 Mar 2008 14:25:07 GMT]]></title><description><![CDATA[<p>Polymorphie hat mit Stack/Heap doch erstmal gar nichts zu tun. Gegenbeispiel Polymorpie ohne Heap:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
class Base
{
  public:
    virtual void func() { std::cout &lt;&lt; &quot;Base&quot; &lt;&lt; std::endl; }
};
class Derived : public Base
{
  public:
    virtual void func() { std::cout &lt;&lt; &quot;Derived&quot; &lt;&lt; std::endl; }
};
int main()
{
  Base b;
  Derived d;
  Base* pb = &amp;b;
  pb-&gt;func(); // gibt base aus
  pb = &amp;d;
  pb-&gt;func(); // gibt derived auas
}
</code></pre>
<p>Ich weiß was du meintest, aber so pauschal ist die Aussage einfach nicht korrekt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1482185</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1482185</guid><dc:creator><![CDATA[OhneName]]></dc:creator><pubDate>Fri, 28 Mar 2008 14:25:07 GMT</pubDate></item><item><title><![CDATA[Reply to C++ : wann Stack, wann Heap on Fri, 28 Mar 2008 14:40:01 GMT]]></title><description><![CDATA[<p>OhneName, kannst du bitte erläutern, was mikey meinte? Oder mikey selber, bitte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1482200</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1482200</guid><dc:creator><![CDATA[extern]]></dc:creator><pubDate>Fri, 28 Mar 2008 14:40:01 GMT</pubDate></item><item><title><![CDATA[Reply to C++ : wann Stack, wann Heap on Fri, 28 Mar 2008 15:17:03 GMT]]></title><description><![CDATA[<p>mikey schrieb:</p>
<blockquote>
<p>Polymorphie ist mit auf dem Stack abgelegten Objekten nicht möglich, da muss man auf dem Heap erzeugen.</p>
</blockquote>
<p>Wer hat denn das Gerücht damals blos in Umlauf gebracht? Hält sich anscheinend immer noch hartnäckig.</p>
<p>Das was du meinst, sind dynamisch erzeugte Objekte. Das hat aber mit Polymorphie nur indirekt was zu tun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1482229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1482229</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Fri, 28 Mar 2008 15:17:03 GMT</pubDate></item><item><title><![CDATA[Reply to C++ : wann Stack, wann Heap on Fri, 28 Mar 2008 15:25:27 GMT]]></title><description><![CDATA[<p>Ich kenne aber auch kein reales Projekt, bei dem polymorphe Objekte auf dem Stack gehalten werden. Sicherlich muß man sie nicht zwingend auf dem Heap erzeugen (beides ist einfach nur ein Teil des Hauptspeichers), aber Mischen sollte man es z.B. schon mal gar nicht (da man dann ja nicht mehr weiß, welches der Objekte man &quot;deleten&quot; muß und welche nicht - ich gehe mal davon aus, daß man polymorphe Objekte in einem Container (z.B. std::vector oder std::list) speichert).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1482234</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1482234</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Fri, 28 Mar 2008 15:25:27 GMT</pubDate></item><item><title><![CDATA[Reply to C++ : wann Stack, wann Heap on Fri, 28 Mar 2008 18:15:59 GMT]]></title><description><![CDATA[<p>Th69 schrieb:</p>
<blockquote>
<p>ich gehe mal davon aus, daß man polymorphe Objekte in einem Container (z.B. std::vector oder std::list) speichert).</p>
</blockquote>
<p>Was soll das jetzt für nen Zusammenhang haben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1482352</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1482352</guid><dc:creator><![CDATA[wieso???]]></dc:creator><pubDate>Fri, 28 Mar 2008 18:15:59 GMT</pubDate></item><item><title><![CDATA[Reply to C++ : wann Stack, wann Heap on Fri, 28 Mar 2008 19:00:59 GMT]]></title><description><![CDATA[<p>Weil man üblicherweise Polymorphie erst bei einer Menge von Objekten anwendet und man sich nicht den Aufwand macht für ein einzelnes Objekt komplette Klassenhierarchien mit virtuellen Methoden zu erstellen -)<br />
Und zum Speichern dieser Objekte (bzw. Zeiger auf diese Objekte!!!) eignen sich nun mal die STL-Container am besten, da man dann einfach eine Iterator-Schleife schreiben kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1482379</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1482379</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Fri, 28 Mar 2008 19:00:59 GMT</pubDate></item><item><title><![CDATA[Reply to C++ : wann Stack, wann Heap on Fri, 28 Mar 2008 19:34:59 GMT]]></title><description><![CDATA[<p>Th69 schrieb:</p>
<blockquote>
<p>Weil man üblicherweise Polymorphie erst bei einer Menge von Objekten anwendet und man sich nicht den Aufwand macht für ein einzelnes Objekt komplette Klassenhierarchien mit virtuellen Methoden zu erstellen -)<br />
Und zum Speichern dieser Objekte (bzw. Zeiger auf diese Objekte!!!) eignen sich nun mal die STL-Container am besten, da man dann einfach eine Iterator-Schleife schreiben kann.</p>
</blockquote>
<p>??? Das ist zusammenhangslos.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1482391</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1482391</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Fri, 28 Mar 2008 19:34:59 GMT</pubDate></item><item><title><![CDATA[Reply to C++ : wann Stack, wann Heap on Fri, 28 Mar 2008 20:20:28 GMT]]></title><description><![CDATA[<p>Polymorphie hat doch nichts mit der Anzahl von Objekten zu tun. Polymorphie kann schon bei einem einzigen Objekt nützlich sein. Es geht um Dynamik eines Datentyps und nicht um Mengen. Sollen wir hier noch mal die OO-Basics durchgehen?</p>
<pre><code class="language-cpp">class A
{
    public:
     virtual void out() { cout &lt;&lt; &quot;A&quot;; }
};

class B : public A
{
    public:
     virtual void out() { cout &lt;&lt; &quot;B&quot;; }
};

void foo(A &amp;a)
{
    a.out();
}

int main()
{
    A a;
    foo(a);

    B b;
    foo(b);
}
</code></pre>
<p>Wetten das foo sowohl A als auch B ausgibt? Und obwohl ich keine Container habe und keinen Heap benutzt habe, hat Polymorphie funktioniert.</p>
<p>Es ist jedoch richtig, das wenn ich an einer anderen Stelle, unabhängig vom Scope, ein dynamisches Objekt speichern will, ich den Heap benutzen muß. Aber das muß ich auch machen, wenn ich <em>keine</em> Polymorphie anwende.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1482392</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1482392</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Fri, 28 Mar 2008 20:20:28 GMT</pubDate></item><item><title><![CDATA[Reply to C++ : wann Stack, wann Heap on Fri, 28 Mar 2008 21:57:53 GMT]]></title><description><![CDATA[<p>akari schrieb:</p>
<blockquote>
<p>ja der Stack ist in der Regel schneller als der Heap.</p>
</blockquote>
<p>Gilt das nicht nur für das Erzeugen eines Objektes aufm Heap ? Der Zugriff sollte doch gleich schnell bei beiden sein !?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1482446</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1482446</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 28 Mar 2008 21:57:53 GMT</pubDate></item><item><title><![CDATA[Reply to C++ : wann Stack, wann Heap on Fri, 28 Mar 2008 22:16:59 GMT]]></title><description><![CDATA[<p>KasF schrieb:</p>
<blockquote>
<p>Gilt das nicht nur für das Erzeugen eines Objektes aufm Heap ? Der Zugriff sollte doch gleich schnell bei beiden sein !?</p>
</blockquote>
<p>bei heap-zugriffen brauchste indirektion (pointer oder sowas). das kann langsamer sein, muss aber nicht.<br />
<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>
]]></description><link>https://www.c-plusplus.net/forum/post/1482452</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1482452</guid><dc:creator><![CDATA[heap-freak]]></dc:creator><pubDate>Fri, 28 Mar 2008 22:16:59 GMT</pubDate></item></channel></rss>