<?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[PostQuitMesssage() - memory leaks]]></title><description><![CDATA[<p>Hi</p>
<p>Ich möchte mein MFC Programm an einer Stelle radikal mit PostQuitMessage() beenden. Leider werde ich dann vom Compiler informiert, dass es memory leaks gibt.</p>
<p>Ich vermute es liegt daran, dass das Programm nicht mehr alle Destruktoren aller Klassen aufrufen kann bevor es aus dem Speicher entfernt wird.</p>
<p>Nun ist mein Programm in einer Classe enthalten, die ich mit der member funktion Run() starten kann. In der MFC Classe &quot;theApp&quot; kann ich ohneweiters in der Funktion &quot;InitInstance()&quot; eine solche Klasse deklarieren.</p>
<p>Nun wollte ich, dass die Classe die mein eigentliches Programm enthält eine Member Variable von &quot;theApp&quot; ist. Der Sinn des ganzen ist, dass ich dann über die globale Variable &quot;theApp&quot; alle Destruktoren aufrufen kann bevor ich PostQuitMessage() starte. Leider bekomme ich dann folgenden Error:</p>
<p>&quot;missing storage class oder type-specifier&quot;</p>
<p>Also als wie wenn meine Classe an der Stelle unbekannt währe. Die entsprechende Headerdatei ist eingebunden.</p>
<p>Kann man mein Problem auf diese Art überhaupt lösen ( also, dass keine Memory Leaks entstehen ), und warum bekomme ich diesen Error?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/149556/postquitmesssage-memory-leaks</link><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Jul 2026 00:06:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/149556.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 07 Jun 2006 08:49:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to PostQuitMesssage() - memory leaks on Wed, 07 Jun 2006 08:49:05 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>Ich möchte mein MFC Programm an einer Stelle radikal mit PostQuitMessage() beenden. Leider werde ich dann vom Compiler informiert, dass es memory leaks gibt.</p>
<p>Ich vermute es liegt daran, dass das Programm nicht mehr alle Destruktoren aller Klassen aufrufen kann bevor es aus dem Speicher entfernt wird.</p>
<p>Nun ist mein Programm in einer Classe enthalten, die ich mit der member funktion Run() starten kann. In der MFC Classe &quot;theApp&quot; kann ich ohneweiters in der Funktion &quot;InitInstance()&quot; eine solche Klasse deklarieren.</p>
<p>Nun wollte ich, dass die Classe die mein eigentliches Programm enthält eine Member Variable von &quot;theApp&quot; ist. Der Sinn des ganzen ist, dass ich dann über die globale Variable &quot;theApp&quot; alle Destruktoren aufrufen kann bevor ich PostQuitMessage() starte. Leider bekomme ich dann folgenden Error:</p>
<p>&quot;missing storage class oder type-specifier&quot;</p>
<p>Also als wie wenn meine Classe an der Stelle unbekannt währe. Die entsprechende Headerdatei ist eingebunden.</p>
<p>Kann man mein Problem auf diese Art überhaupt lösen ( also, dass keine Memory Leaks entstehen ), und warum bekomme ich diesen Error?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1072992</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1072992</guid><dc:creator><![CDATA[mfcanfänger]]></dc:creator><pubDate>Wed, 07 Jun 2006 08:49:05 GMT</pubDate></item><item><title><![CDATA[Reply to PostQuitMesssage() - memory leaks on Wed, 07 Jun 2006 09:17:08 GMT]]></title><description><![CDATA[<p>Radikal wäre exit() zu benutzen. Bei PostQuitMessage wird eigentlich alles ordnungsgemäß zerstört.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1073013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1073013</guid><dc:creator><![CDATA[ex]]></dc:creator><pubDate>Wed, 07 Jun 2006 09:17:08 GMT</pubDate></item><item><title><![CDATA[Reply to PostQuitMesssage() - memory leaks on Wed, 07 Jun 2006 11:28:12 GMT]]></title><description><![CDATA[<p>Das ist Quark. PostQuitMessage beendet die Nachrichten schleife. Anschließend sind natürlich noch alle Fenster allokiert und sind Leaks!</p>
<p>Icfh weiß nicht wer diesen Quatsch mit PostQuitMessage mal in die Welt gesetzt hat ein Programm zu beenden! Es beendet brutal die Nachrichtenschleife ohne darauf Rücksicht zu nehmen, dass da noch offene Fenster sind.</p>
<p>Korrekt wäre das zerstören des Main Windows per DestroyWindow, das löst dann auch den PostQuitMessage aus.</p>
<p>Wenn jedoch radikal beendet werden soll/muss warum kümmert man sich dann noch um Leaks, den es ist in diesem Fall ja meistens ein Notfall!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1073101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1073101</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 07 Jun 2006 11:28:12 GMT</pubDate></item><item><title><![CDATA[Reply to PostQuitMesssage() - memory leaks on Wed, 07 Jun 2006 11:30:45 GMT]]></title><description><![CDATA[<p>Also kurz gesagt wenn das Programm abgewürgt wird mit &quot;exit(0)&quot; dann sind leaks ziemlich egal. Windows wird dadurch also nicht im geringsten beeinträchtigt ( MFC ist statisch gelingt, wenn das einen einfluss darauf nimmt ). Hab mal gelesen Programme können auch leaks in DLLs erzeugen, die nach Programm ende noch bleiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1073104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1073104</guid><dc:creator><![CDATA[mfcanfänger]]></dc:creator><pubDate>Wed, 07 Jun 2006 11:30:45 GMT</pubDate></item><item><title><![CDATA[Reply to PostQuitMesssage() - memory leaks on Wed, 07 Jun 2006 11:35:52 GMT]]></title><description><![CDATA[<p>Martin Richter: Aber nachdem die Nachrichtenschleife abgebrochen wurde wird doch WinMain beendet und alle globalen Objekte werden ordnungsgemäß zerstört, sprich die Destruktoren werden aufgerufen. Außer sie werden auf dem Heap angelegt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1073107</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1073107</guid><dc:creator><![CDATA[ex]]></dc:creator><pubDate>Wed, 07 Jun 2006 11:35:52 GMT</pubDate></item><item><title><![CDATA[Reply to PostQuitMesssage() - memory leaks on Wed, 07 Jun 2006 11:38:02 GMT]]></title><description><![CDATA[<p>mfcanfänger: exit() bitte niemals in einem C++ Programm benutzen! Ausser dir ist alles scheiss egal, aber dann hättest du bestimmt nicht den Thread eröffnet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1073110</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1073110</guid><dc:creator><![CDATA[ex]]></dc:creator><pubDate>Wed, 07 Jun 2006 11:38:02 GMT</pubDate></item><item><title><![CDATA[Reply to PostQuitMesssage() - memory leaks on Wed, 07 Jun 2006 18:09:27 GMT]]></title><description><![CDATA[<p>Das ist eben das Problem. Alle von CFRameWnd abgeleiteten Klassen werden auf dem Heap angelegt, inkl. aller Views und CDocuments. D.h. heißt im Klartext, keiner dieser vielen Destruktoren wird aufgerufen. Je nachdem was nun für Objekte allokiert wurden oder Handles angefordert wurden können durchaus Leaks aller Form bleiben. Und ja XP/NT ist sehr robust dagegen, aber eben nicht grundsätzlich gefeit.<br />
Also im Notfall ja, als Normalfall eben nein!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1073366</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1073366</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 07 Jun 2006 18:09:27 GMT</pubDate></item></channel></rss>