<?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[statische und dynamische Objekte in der selben Liste]]></title><description><![CDATA[<p>Frohes Neues!</p>
<p>Ich habe für mein Projekt einen Container, welcher intern eine einfach verkettete Liste ist. In diesem Container sollen sowohl Stack- als auch Heap- objekte gespeichert werden. Eigentlich ist dies nicht zwingend notwendig. Es ist nur so, dass der Stack bei der Erstellung der Objekte effizienter ist, und diese Objekte bereits von Anfang an vorhanden sind. Später können vom Benutzer weitere Objekte angehängt werden, welche ich dann mit new anfordern würde. Jetzt müssen diese auch wieder mit deltete gelöscht werden. Die Zeiger im Container sind aber so nicht unterscheidbar. Welche Methode würdet ihr verwenden um die Objekte gemeinsam zu verwalten, oder würdet ihr es überhaupt tun? Es handelt sich um eine virtuelle Maschine. Effizienz spielt damit schon eine bedeutende Rolle.</p>
<p>Danke,<br />
Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/297557/statische-und-dynamische-objekte-in-der-selben-liste</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 08:25:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/297557.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 01 Jan 2012 20:47:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to statische und dynamische Objekte in der selben Liste on Sun, 01 Jan 2012 20:47:40 GMT]]></title><description><![CDATA[<p>Frohes Neues!</p>
<p>Ich habe für mein Projekt einen Container, welcher intern eine einfach verkettete Liste ist. In diesem Container sollen sowohl Stack- als auch Heap- objekte gespeichert werden. Eigentlich ist dies nicht zwingend notwendig. Es ist nur so, dass der Stack bei der Erstellung der Objekte effizienter ist, und diese Objekte bereits von Anfang an vorhanden sind. Später können vom Benutzer weitere Objekte angehängt werden, welche ich dann mit new anfordern würde. Jetzt müssen diese auch wieder mit deltete gelöscht werden. Die Zeiger im Container sind aber so nicht unterscheidbar. Welche Methode würdet ihr verwenden um die Objekte gemeinsam zu verwalten, oder würdet ihr es überhaupt tun? Es handelt sich um eine virtuelle Maschine. Effizienz spielt damit schon eine bedeutende Rolle.</p>
<p>Danke,<br />
Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2162729</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2162729</guid><dc:creator><![CDATA[Martin Kalbfuß]]></dc:creator><pubDate>Sun, 01 Jan 2012 20:47:40 GMT</pubDate></item><item><title><![CDATA[Reply to statische und dynamische Objekte in der selben Liste on Sun, 01 Jan 2012 20:53:19 GMT]]></title><description><![CDATA[<p>Klingt äußerst abenteuerlich, würde ich nicht so machen. Deine Begründung kommt mir auch nicht verständlich vor. Und als letzten Kritikpunkt passen die Begriffe Effizienz und verkettete Liste einfach nicht zusammen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2162731</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2162731</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 01 Jan 2012 20:53:19 GMT</pubDate></item><item><title><![CDATA[Reply to statische und dynamische Objekte in der selben Liste on Mon, 02 Jan 2012 08:17:41 GMT]]></title><description><![CDATA[<p>Wenn du Objekte auf dem Stack in einer Liste haben möchtest, impliziert das, dass die Liste ihre Knoten nicht selbst verwaltet oder aber dass die Knoten nur einen Pointer auf die Elemente beinhalten, nicht aber die Elemente selbst. Ich nehme an, dass du dich da etwas ungenau ausgedrückt hast.</p>
<p>Eine Liste, die ihre Knoten nicht selbst verwaltet, wäre ein ziemlich krüppeliges Ding, du müsstest an Stelle der Objekte dann die kompletten Knoten selber anlegen (auf dem Stack und/oder Heap, wie du es grade brauchst) und sie dann der Liste übergeben. Halte ich für nicht sehr elegant.</p>
<p>Eine Liste, die nur simple C-Pointer auf die Objekte beinhaltet, könnte zwar Stack- und Heap-Objekte beinhalten, kann aber nicht wissen, welche der Objekte auf dem Heap liegen und daher deren Speicher nicht freigeben. Darum müsstest du dich also selber kümmern.</p>
<p>Soll die Liste die Heapobjekte selber verwalten und freigeben, müsstest du eine Art Smartpointer selber schreiben, der weiß, welche Elemente wo liegen.</p>
<p>So oder so würde ich mich Sepp allerdings anschließen - es klingt viel zu abenteuerlich. Vor allem ist die Frage, <em>wie</em> viel effizienter die Erstellung auf dem Stack ist (Profiler, nicht eigene Schätzung), und ob das den Aufwand einer solchen Listenverwaltung rechtfertigt. Ggf. würde eine eigene Speicherverwaltung auch einiges an Effizienz bringen. Laut dem was du geschrieben hast, sind die Stack-Objekte &quot;von Anfang an vorhanden&quot;. Wenn das bedeutet, dass sie beim Start deiner VM einmal erzeugt werden und dann in der Liste verwaltet werden sollen, dürfte die Performance doch nicht ganz so kritisch sein wie bei der eigentlichen Laufzeit der VM oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2162774</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2162774</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 02 Jan 2012 08:17:41 GMT</pubDate></item><item><title><![CDATA[Reply to statische und dynamische Objekte in der selben Liste on Mon, 02 Jan 2012 08:30:15 GMT]]></title><description><![CDATA[<blockquote>
<p>Es ist nur so, dass der Stack bei der Erstellung der Objekte effizienter ist</p>
</blockquote>
<p>Dein Programm startet dann 0.03s schneller. Wow.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2162776</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2162776</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Mon, 02 Jan 2012 08:30:15 GMT</pubDate></item><item><title><![CDATA[Reply to statische und dynamische Objekte in der selben Liste on Mon, 02 Jan 2012 09:35:34 GMT]]></title><description><![CDATA[<p>Ok, danke Leuts</p>
<p>Werde von dieser Vermischung absehen und alle mit new anfordern. Für weitere Optimierungen ist später immer noch Zeit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2162788</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2162788</guid><dc:creator><![CDATA[Martin Kalbfuß]]></dc:creator><pubDate>Mon, 02 Jan 2012 09:35:34 GMT</pubDate></item><item><title><![CDATA[Reply to statische und dynamische Objekte in der selben Liste on Mon, 02 Jan 2012 10:14:32 GMT]]></title><description><![CDATA[<p>Nimm einen speziellen Allokator (z.B. Boost.Pool), wenn dir <code>new</code> zu langsam ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2162800</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2162800</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 02 Jan 2012 10:14:32 GMT</pubDate></item><item><title><![CDATA[Reply to statische und dynamische Objekte in der selben Liste on Mon, 02 Jan 2012 10:22:51 GMT]]></title><description><![CDATA[<p>Eine einfache Optimierung die höchstwahrscheinlich etwas bringt, wäre die STL oder boost benutzen, anstatt alles selber zu machen. Dein Vorhaben klingt so, als wolltest du eine intrusive, einfach verkettete Liste. Gibt's bei Boost schon fertig und mindestens genau so schnell wie du es selbst mit viel Aufwand machen könntest.</p>
<p>Außerdem sind verkettete Listen eher etwas für die A&amp;D-Vorlesung, in der Praxis sind sie oftmals deutlich langsamer als eine von der Laufzeitkomplexität her eigentlich weniger geeignete Datenstruktur, die dafür kleinere Konstanten hat (die Liste hat riesige Konstanten im Vergleich zu anderen Containern)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2162805</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2162805</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 02 Jan 2012 10:22:51 GMT</pubDate></item><item><title><![CDATA[Reply to statische und dynamische Objekte in der selben Liste on Mon, 02 Jan 2012 10:53:13 GMT]]></title><description><![CDATA[<p><code>std::list</code> habe ich bisher vor allem verwendet, falls Iteratoren gültig bleiben müssen. Boost 1.48 bringt jedoch mit <code>boost::stable_vector</code> eine sehr interessante Alternative raus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2162816</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2162816</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 02 Jan 2012 10:53:13 GMT</pubDate></item><item><title><![CDATA[Reply to statische und dynamische Objekte in der selben Liste on Mon, 02 Jan 2012 20:00:11 GMT]]></title><description><![CDATA[<p>Wie wäre es mit :</p>
<pre><code class="language-cpp">Object x;
myList.push_back(&amp;x); //Heißt die Methode bei Listen so ^^^?
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2163025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2163025</guid><dc:creator><![CDATA[pyhax]]></dc:creator><pubDate>Mon, 02 Jan 2012 20:00:11 GMT</pubDate></item><item><title><![CDATA[Reply to statische und dynamische Objekte in der selben Liste on Tue, 03 Jan 2012 01:00:05 GMT]]></title><description><![CDATA[<p>pyhax schrieb:</p>
<blockquote>
<p>Wie wäre es mit :</p>
<pre><code class="language-cpp">Object x;
myList.push_back(&amp;x); //Heißt die Methode bei Listen so ^^^?
</code></pre>
</blockquote>
<p>Keine Gute Idee.</p>
<pre><code class="language-cpp">List&lt;Object*&gt; myList;
{
  Object x;
  myList.push_back(&amp;x);
} // jetzt enthält myList einen Zeiger auf ein zerstörtes Objekt, ganz böse Sache, da stirbt jedes mal eine süße Katze
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2163099</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2163099</guid><dc:creator><![CDATA[bmario]]></dc:creator><pubDate>Tue, 03 Jan 2012 01:00:05 GMT</pubDate></item><item><title><![CDATA[Reply to statische und dynamische Objekte in der selben Liste on Tue, 03 Jan 2012 14:05:24 GMT]]></title><description><![CDATA[<p>Na dann muss man halt new &amp; delete nutzen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2163266</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2163266</guid><dc:creator><![CDATA[pyhax]]></dc:creator><pubDate>Tue, 03 Jan 2012 14:05:24 GMT</pubDate></item><item><title><![CDATA[Reply to statische und dynamische Objekte in der selben Liste on Tue, 03 Jan 2012 20:28:23 GMT]]></title><description><![CDATA[<p>Muss man nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2163427</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2163427</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Tue, 03 Jan 2012 20:28:23 GMT</pubDate></item></channel></rss>