<?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[gloabel + statische Vars: Destruktionsreihenfolge]]></title><description><![CDATA[<p>Hallo Forum,</p>
<p>ich habe ein Problem. Ich habe eine globale Instanz einer Klasse A, welche in ihrem Destruktor auf eine statische Variable einer Klasse B zugreift. Klasse A und Klasse B sind in der gleichen Datei definiert (class A{}; extern A a; class B{public:static CFoo bar;};) Leider wird aus irgendeinem Grund der Konstruktor von B::bar vor dem Destruktor von meiner A Instanz aufgerufen. Wie kann ich das verhindern?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/208815/gloabel-statische-vars-destruktionsreihenfolge</link><generator>RSS for Node</generator><lastBuildDate>Mon, 12 Oct 2026 03:01:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/208815.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 23 Mar 2008 03:13:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to gloabel + statische Vars: Destruktionsreihenfolge on Sun, 23 Mar 2008 03:13:53 GMT]]></title><description><![CDATA[<p>Hallo Forum,</p>
<p>ich habe ein Problem. Ich habe eine globale Instanz einer Klasse A, welche in ihrem Destruktor auf eine statische Variable einer Klasse B zugreift. Klasse A und Klasse B sind in der gleichen Datei definiert (class A{}; extern A a; class B{public:static CFoo bar;};) Leider wird aus irgendeinem Grund der Konstruktor von B::bar vor dem Destruktor von meiner A Instanz aufgerufen. Wie kann ich das verhindern?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1478994</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1478994</guid><dc:creator><![CDATA[HalliHallo]]></dc:creator><pubDate>Sun, 23 Mar 2008 03:13:53 GMT</pubDate></item><item><title><![CDATA[Reply to gloabel + statische Vars: Destruktionsreihenfolge on Sun, 23 Mar 2008 05:03:33 GMT]]></title><description><![CDATA[<p>Versuch nicht das zu verhindern, sondern versuchs mit nem anderen Design, ohne globale Instanz und so komische abhängigkeiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1479001</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1479001</guid><dc:creator><![CDATA[tipp]]></dc:creator><pubDate>Sun, 23 Mar 2008 05:03:33 GMT</pubDate></item><item><title><![CDATA[Reply to gloabel + statische Vars: Destruktionsreihenfolge on Sun, 23 Mar 2008 12:45:42 GMT]]></title><description><![CDATA[<p>Das ist schlecht. Ich versuche mein Problem mal etwas näher zu erleutern.</p>
<p>Es geht eigentlich einfach nur um einen Allocator. Von dem Allocato soll es nur eine einzige Instanz geben, daher sind alle methoden statisch (Ich mag keine SingleTones!). Nun habe ich einige globale Variablen, die in ihrem Konstruktor Speicher von diesem Allokator anfordern, und in ihrem destruktor diesen wieder freigeben lassen. Der Allokator selbst hat intern einen Smart pointer mit &quot;irgendwelchen&quot; Systemspezifischen Handles dahinter. Nun ist das Problem, dass mein Programm bei Ende aus irgendeinem Grund diesen Smart pointer immer vor den anderne globalen Objekten zerstört, was letzendlich dazu führt, dass die globalen Objekte ihren Speicher nicht mehr freigeben können.</p>
<p>Eigentlich ist das keine große Sache (Resourceleaks!) - aber trotzdem - ich möchte es richtig haben!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1479097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1479097</guid><dc:creator><![CDATA[HalliHallo]]></dc:creator><pubDate>Sun, 23 Mar 2008 12:45:42 GMT</pubDate></item><item><title><![CDATA[Reply to gloabel + statische Vars: Destruktionsreihenfolge on Sun, 23 Mar 2008 12:50:39 GMT]]></title><description><![CDATA[<p>HalliHallo schrieb:</p>
<blockquote>
<p>Es geht eigentlich einfach nur um einen Allocator. Von dem Allocato soll es nur eine einzige Instanz geben, daher sind alle methoden statisch (Ich mag keine SingleTones!).</p>
</blockquote>
<p>Darum baust du dir ein nicht objektorientiertes Singleton?</p>
<blockquote>
<p>Nun habe ich einige globale Variablen</p>
</blockquote>
<p>Warum?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1479101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1479101</guid><dc:creator><![CDATA[tipp]]></dc:creator><pubDate>Sun, 23 Mar 2008 12:50:39 GMT</pubDate></item><item><title><![CDATA[Reply to gloabel + statische Vars: Destruktionsreihenfolge on Sun, 23 Mar 2008 16:34:47 GMT]]></title><description><![CDATA[<p>Ich bin mir jetzt nicht sicher, ob dir das hilft, aber die Objekte werden in der umgekehrten Reihenfolge zerstört, wie sie konstruiert worden sind.</p>
<pre><code class="language-cpp">foo a; //Konstruktion
foo b; //Konstruktion
...

//Ende
//b zerstört
//a zerstört
</code></pre>
<p>Also, wenn ich das richtig verstanden habe, kannst du mal probieren die Definition umzukehren. (du hast aber lediglich eine Deklaration von A in der gleichen Übersetzungseinheit. - Ist also nicht sicher, dass es geht, da die Reihenfolge der Deklaration in verschiedenen Übersetzungseinheiten nicht festgesetzt ist.)</p>
<p>EDIT:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-207456-and-postdays-is-0-and-postorder-is-asc-and-highlight-is-dieter-and-start-is-0.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-207456-and-postdays-is-0-and-postorder-is-asc-and-highlight-is-dieter-and-start-is-0.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1479194</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1479194</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 23 Mar 2008 16:34:47 GMT</pubDate></item><item><title><![CDATA[Reply to gloabel + statische Vars: Destruktionsreihenfolge on Sun, 23 Mar 2008 16:59:58 GMT]]></title><description><![CDATA[<p>Nope, die definitionen sind nicht in der gleichen Übersetzungseinheit. Deklariert wird erst der Allocator, dann die globalen KLassen.</p>
<p>Anyway, ich habe das Problem jetzt ziemlich unschön umgangen. Ging' leider nicht besser. Schade. Ich hätte mir gewünscht, dass C++ hier was schönes anbietet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1479219</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1479219</guid><dc:creator><![CDATA[HalliHallo]]></dc:creator><pubDate>Sun, 23 Mar 2008 16:59:58 GMT</pubDate></item><item><title><![CDATA[Reply to gloabel + statische Vars: Destruktionsreihenfolge on Sun, 23 Mar 2008 17:04:50 GMT]]></title><description><![CDATA[<p>HalliHallo schrieb:</p>
<blockquote>
<p>Anyway, ich habe das Problem jetzt ziemlich unschön umgangen. Ging' leider nicht besser. Schade. Ich hätte mir gewünscht, dass C++ hier was schönes anbietet.</p>
</blockquote>
<p>Singleton und atexit</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1479225</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1479225</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Sun, 23 Mar 2008 17:04:50 GMT</pubDate></item><item><title><![CDATA[Reply to gloabel + statische Vars: Destruktionsreihenfolge on Sun, 23 Mar 2008 17:11:14 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>so wie ich das verstanden habe, funktioniert das mit SingleTone und atexit eben nicht.</p>
<p>Beispiel:</p>
<pre><code>Initalisierung globales Objekt A
-&gt;Objekt A ruft im ctor Singleton-methode auf
--&gt;Initalisierung Singleton
</code></pre>
<p>Bei Programmende würde nun der Vorgang umgekehrt ablaufen...</p>
<pre><code>Destruktion Singleton
Destruktion Objekt A
</code></pre>
<p>Ich möchte aber, dass das Singleton, bzw. meine statische Klasse, oder wasauchimmer, __nach__ Objekt A zerstört wird.</p>
<p>Hab' ich da was falsch verstanden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1479229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1479229</guid><dc:creator><![CDATA[HalliHallo]]></dc:creator><pubDate>Sun, 23 Mar 2008 17:11:14 GMT</pubDate></item><item><title><![CDATA[Reply to gloabel + statische Vars: Destruktionsreihenfolge on Sun, 23 Mar 2008 17:13:30 GMT]]></title><description><![CDATA[<p>HalliHallo schrieb:</p>
<blockquote>
<p>Hab' ich da was falsch verstanden?</p>
</blockquote>
<p>Du hast atexit ignoriert.</p>
<p>Kleiner Tipp: du zerstoerst deinen Singleton im atexit - und dadurch dass du einen Singleton hast garantierst du, dass du rechtzeitig erstellt wirst und dank atexit wirst du spaet genug zerstoert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1479230</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1479230</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Sun, 23 Mar 2008 17:13:30 GMT</pubDate></item><item><title><![CDATA[Reply to gloabel + statische Vars: Destruktionsreihenfolge on Sun, 23 Mar 2008 17:15:37 GMT]]></title><description><![CDATA[<p>Die atexit-Methoden werden aber doch bevor der Destruktion der globalen Objekte aufgerufen???</p>
<p>mmmh. Ich probiers' mal aus...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1479232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1479232</guid><dc:creator><![CDATA[HalliHallo]]></dc:creator><pubDate>Sun, 23 Mar 2008 17:15:37 GMT</pubDate></item><item><title><![CDATA[Reply to gloabel + statische Vars: Destruktionsreihenfolge on Sun, 23 Mar 2008 17:20:21 GMT]]></title><description><![CDATA[<p>mmmh. Das klappt doch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":\"
      alt="😕"
    /></p>
<p>Kewl.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1479236</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1479236</guid><dc:creator><![CDATA[HalliHallo]]></dc:creator><pubDate>Sun, 23 Mar 2008 17:20:21 GMT</pubDate></item></channel></rss>