<?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[Singletons in richtiger Reihenfolge löschen]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe in meinem Programm zwei Singletons. Das Konstrukt eines Singleton garantiert ja, dass die Singletons in einer bestimmten Reihenfolge konstruiert werden. Aber gibt es auch einen (einfachen) Weg, zu garantieren, dass sie in einer bestimmten Reihenfolge gelöscht werden?</p>
<p>Ich habe mich mit der Implementierung übrigens an &quot;Design Patterns&quot; gehalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/239269/singletons-in-richtiger-reihenfolge-löschen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 13:01:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/239269.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 21 Apr 2009 15:18:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Singletons in richtiger Reihenfolge löschen on Tue, 21 Apr 2009 15:18:35 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe in meinem Programm zwei Singletons. Das Konstrukt eines Singleton garantiert ja, dass die Singletons in einer bestimmten Reihenfolge konstruiert werden. Aber gibt es auch einen (einfachen) Weg, zu garantieren, dass sie in einer bestimmten Reihenfolge gelöscht werden?</p>
<p>Ich habe mich mit der Implementierung übrigens an &quot;Design Patterns&quot; gehalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1699211</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1699211</guid><dc:creator><![CDATA[ingobulla]]></dc:creator><pubDate>Tue, 21 Apr 2009 15:18:35 GMT</pubDate></item><item><title><![CDATA[Reply to Singletons in richtiger Reihenfolge löschen on Tue, 21 Apr 2009 15:31:21 GMT]]></title><description><![CDATA[<p>Ja, es ist ja dir überlassen wie die Singleton erstellt wird, du hast ja die inetrne static, da kansnte genauso mit new eine Singleton anlegen, das ermöglicht dir gezieltes Löschen der Instanz, du mußt dann aber aufpassen das die zugreifenden Klassen ne gültigkeitsprüfung machen nicht das sie auf die nicht existente Instanz zugreifen.</p>
<p>Alternativ kannst du nur dafür sorgen das die klassen ind er richtigen Reihenfolge erstellt werden, falls das Möglich ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1699222</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1699222</guid><dc:creator><![CDATA[Xebov]]></dc:creator><pubDate>Tue, 21 Apr 2009 15:31:21 GMT</pubDate></item><item><title><![CDATA[Reply to Singletons in richtiger Reihenfolge löschen on Tue, 21 Apr 2009 16:38:12 GMT]]></title><description><![CDATA[<p>ingobulla schrieb:</p>
<blockquote>
<p>Aber gibt es auch einen (einfachen) Weg, zu garantieren, dass sie in einer bestimmten Reihenfolge gelöscht werden?</p>
</blockquote>
<p>Kurze Antwort: nein. Zumindest nicht einfach. Die Reihenfolge, in der statische Objekte nach Ende der main() abgeräumt werden, ist meines Wissens nicht spezifiziert, wenn sie in verschiedenen Übersetzungseinheiten liegen. Es gibt verschiedene Ansätze dafür, das zu lösen. Alexandrescu hat in <em>Modern C++ Design</em> z.B. die Implementierung eines &quot;PhoenixSingleton&quot; gezeigt, das wiederaufersteht, wenn nach dem Abräumen nochmal darauf zugegriffen wird. So ein Singleton kann natürlich keinen internen Zustand haben. Eine andere Möglichkeit wäre, ein einzelnes übergeordnetes Singleton zu haben, das sich ums Abräumen der anderen Singletons kümmert, wenn es zerstört wird. Das sähe dann natürlich etwas anders aus als die GoF-Implementation.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1699276</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1699276</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 21 Apr 2009 16:38:12 GMT</pubDate></item><item><title><![CDATA[Reply to Singletons in richtiger Reihenfolge löschen on Tue, 21 Apr 2009 16:42:33 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>...</p>
</blockquote>
<p>Aber ist die static Variable in der die Singleton liegt nicht auch eine Normale variable die beim erstmaligen Aufruf der Klasse auf den Stack gelegt wird und damit einen deffinierten zeitpunkt fürs verschwinden hätte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1699278</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1699278</guid><dc:creator><![CDATA[Xebov]]></dc:creator><pubDate>Tue, 21 Apr 2009 16:42:33 GMT</pubDate></item><item><title><![CDATA[Reply to Singletons in richtiger Reihenfolge löschen on Tue, 21 Apr 2009 16:57:20 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>...</p>
</blockquote>
<p>Es gibt im <em>Modern C++ Design: Generic Programming and Design Patterns Applied</em> von Andrei Alexandrescu noch Singletons mit Longevity. Bei denen kann man die Reihenfolge der Zerstörung über Prioritäten steuern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1699288</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1699288</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Tue, 21 Apr 2009 16:57:20 GMT</pubDate></item><item><title><![CDATA[Reply to Singletons in richtiger Reihenfolge löschen on Tue, 21 Apr 2009 20:23:56 GMT]]></title><description><![CDATA[<p>Xebov schrieb:</p>
<blockquote>
<p>Aber ist die static Variable in der die Singleton liegt nicht auch eine Normale variable die beim erstmaligen Aufruf der Klasse auf den Stack gelegt wird und damit einen deffinierten zeitpunkt fürs verschwinden hätte?</p>
</blockquote>
<p>Nein. Stack-Variablen gehören zur <em>automatischen</em> Speicherklasse. Diese werden bei Verlassen des Scopes automatisch zerstört. Das Folgende schreibt zwar niemand, aber wäre explizit:</p>
<pre><code class="language-cpp">auto int i;
</code></pre>
<p>Variablen mit vorgestelltem <code>static</code> hingegen gehören zur <em>statischen</em> Speicherklasse. Diese Variablen existieren bis zum Programmende.</p>
<pre><code class="language-cpp">static int i;
</code></pre>
<p>Darüber hinaus gibt es noch zwei weitere Speicherklassen:</p>
<pre><code class="language-cpp">extern int i;
register int i;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1699401</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1699401</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 21 Apr 2009 20:23:56 GMT</pubDate></item><item><title><![CDATA[Reply to Singletons in richtiger Reihenfolge löschen on Tue, 21 Apr 2009 20:50:20 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Nein. Stack-Variablen gehören zur <em>automatischen</em> Speicherklasse. Diese werden bei Verlassen des Scopes automatisch zerstört.</p>
</blockquote>
<p>OK, danke für die Übersicht, wuste ich bisher garnicht, dachte immer das fliegt alels auf den selben Stack.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1699418</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1699418</guid><dc:creator><![CDATA[Xebov]]></dc:creator><pubDate>Tue, 21 Apr 2009 20:50:20 GMT</pubDate></item></channel></rss>