<?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[Warum übheraupt noch deinitialisieren?]]></title><description><![CDATA[<p>Hallo,</p>
<p>die Literatur predigt z.B. Gerätekontexte beim Beenden des Programms zu deinitalisieren.<br />
Aber ist es denn nicht so, dass Windows (NT/2000/XP) dies bereits zuverlässig von selbst macht?<br />
Ich kann jedenfalls keinen Unterschied entdecken.</p>
<p>Oder gibt es doch mögliche Gründe diesen Aufwand noch zu betreiben?</p>
<p>Vielen Dank für Infos!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/86765/warum-übheraupt-noch-deinitialisieren</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Apr 2026 16:35:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/86765.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 22 Sep 2004 10:06:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Warum übheraupt noch deinitialisieren? on Wed, 22 Sep 2004 10:07:28 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>die Literatur predigt z.B. Gerätekontexte beim Beenden des Programms zu deinitalisieren.<br />
Aber ist es denn nicht so, dass Windows (NT/2000/XP) dies bereits zuverlässig von selbst macht?<br />
Ich kann jedenfalls keinen Unterschied entdecken.</p>
<p>Oder gibt es doch mögliche Gründe diesen Aufwand noch zu betreiben?</p>
<p>Vielen Dank für Infos!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/612710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/612710</guid><dc:creator><![CDATA[JWolfram]]></dc:creator><pubDate>Wed, 22 Sep 2004 10:07:28 GMT</pubDate></item><item><title><![CDATA[Reply to Warum übheraupt noch deinitialisieren? on Wed, 22 Sep 2004 10:42:21 GMT]]></title><description><![CDATA[<p>Tjoo,<br />
meine Mutter hat mein Zimmer auch immer aufgeräumt, wenn ich lange genug zu faul war...<br />
Nur hab ich dann nichts mehr wiedergefunden....</p>
<p>Es geht einfach um's Prinzip. Was man nutzt, sollte man auch wieder wegräumen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/612753</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/612753</guid><dc:creator><![CDATA[DocJunioR]]></dc:creator><pubDate>Wed, 22 Sep 2004 10:42:21 GMT</pubDate></item><item><title><![CDATA[Reply to Warum übheraupt noch deinitialisieren? on Wed, 22 Sep 2004 13:47:47 GMT]]></title><description><![CDATA[<p>Währe toll wenn mir jemand den praktischen Nutzen and irgend einen Beispiel erläutern?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/612864</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/612864</guid><dc:creator><![CDATA[JWolfram]]></dc:creator><pubDate>Wed, 22 Sep 2004 13:47:47 GMT</pubDate></item><item><title><![CDATA[Reply to Warum übheraupt noch deinitialisieren? on Wed, 22 Sep 2004 15:48:28 GMT]]></title><description><![CDATA[<p>Diese Frage ist durchaus berrechtigt.<br />
Ich frage mich auch folgendes:</p>
<p>Wandlung von CString in LPTSTR</p>
<pre><code>CString a = &quot;hallo welt&quot;;
int nLen = a.GetLength();
LPTSTR lp = a.GetBuffer(nLen);
a.ReleaseBuffer();
</code></pre>
<p>Wenn ich in einer Funktion bin, wird nach dem Beenden<br />
sowieso alles verworfen, also warum den ReleaseBuffer ??</p>
<p>Nachdem ich erfahren habe, das Delphi die Release sogar automatisch<br />
nach dem Beenden übernimmt, frage ich mich, warum das VC++ nicht kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/612973</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/612973</guid><dc:creator><![CDATA[thenoname]]></dc:creator><pubDate>Wed, 22 Sep 2004 15:48:28 GMT</pubDate></item><item><title><![CDATA[Reply to Warum übheraupt noch deinitialisieren? on Wed, 22 Sep 2004 16:17:52 GMT]]></title><description><![CDATA[<p>zum Thema allgemein:<br />
Es giebt viele neue sachen, die codeverkürzungen zulassen, z.B.: return [...] am ende einer Funktion, kann man bei vielen Compilern inzwischen weglassen...<br />
Wenn wer das tut meckern aber sicherlich einige! Ich denke, das sich irgendwann (hoffentlich bald) eine neue Generation von Programmierern herauskristallisieren wird, die den gebotenen Komfort schätzen und nutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/612999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/612999</guid><dc:creator><![CDATA[ness]]></dc:creator><pubDate>Wed, 22 Sep 2004 16:17:52 GMT</pubDate></item><item><title><![CDATA[Reply to Warum übheraupt noch deinitialisieren? on Wed, 22 Sep 2004 16:33:16 GMT]]></title><description><![CDATA[<p>thenoname schrieb:</p>
<blockquote>
<pre><code>CString a = &quot;hallo welt&quot;;
int nLen = a.GetLength();
LPTSTR lp = a.GetBuffer(nLen);
a.ReleaseBuffer();
</code></pre>
</blockquote>
<p>C++ kennt Destruktoren. Wenn CString diese nicht benutzt, liegt diese Verhaltensweise wohl an CString.<br />
std::string beispielsweise benötigt keinen relase()-Aufruf nach string::c_str().</p>
<p>Die WinAPI verlangt Release-Aufrufe, also muss man sie benutzen. Wenn sie nicht mehr benötigt würden, würden in der Doku entsprechende Hinweise stehen (&quot;überflüssig&quot; o.ä.).<br />
In C++ würde man diese Release-Aufrufe natürlich mit Destruktoren kapseln.</p>
<p>ness schrieb:</p>
<blockquote>
<p>return [...] am ende einer Funktion, kann man bei vielen Compilern inzwischen weglassen...</p>
</blockquote>
<p>Das Komma war wohl ein Tippfehler.<br />
return wegzulassen ist ziemlicher Blödsinn und nur bei main() erlaubt und sinnvoll. Ansonsten deklariert man die betreffende Funktion void.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/613022</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/613022</guid><dc:creator><![CDATA[Christoph]]></dc:creator><pubDate>Wed, 22 Sep 2004 16:33:16 GMT</pubDate></item><item><title><![CDATA[Reply to Warum übheraupt noch deinitialisieren? on Wed, 22 Sep 2004 17:33:51 GMT]]></title><description><![CDATA[<p>cd9000 schrieb:</p>
<p>Wenn sie nicht mehr benötigt würden, würden in der Doku entsprechende Hinweise stehen (&quot;überflüssig&quot; o.ä.).</p>
<p>Dazu fällt mir der passende Ausspruch der MSDN ein:</p>
<p>Funktion: Release<br />
may be useful for diagnostics or testing</p>
<p>Das mit dem Destruktor hatte ich hier schon mal erwähnt. Irgendwie macht<br />
der Destruktor beim OnClose nicht automatisch alle Objekte, Interfaces usw.<br />
zu. Wie gesagt, in Delphi werden die API Release methoden umbenannt in<br />
_release und vom Programmierer somit ferngehlten. Am Schluss macht der Destruktor<br />
alle _release Aufrufe und gut ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/613073</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/613073</guid><dc:creator><![CDATA[thenoname]]></dc:creator><pubDate>Wed, 22 Sep 2004 17:33:51 GMT</pubDate></item><item><title><![CDATA[Reply to Warum übheraupt noch deinitialisieren? on Wed, 22 Sep 2004 21:36:56 GMT]]></title><description><![CDATA[<p>thenoname schrieb:</p>
<blockquote>
<p>[Delphi hält release() vom Programmierer fern]</p>
</blockquote>
<p>Das ist in C++ ebenfalls ohne Probleme möglich, wenn man nicht gerade eine Klassenbibliothek benutzt, die auf manuelle Speicherfreigabe besteht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/613268</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/613268</guid><dc:creator><![CDATA[Christoph]]></dc:creator><pubDate>Wed, 22 Sep 2004 21:36:56 GMT</pubDate></item><item><title><![CDATA[Reply to Warum übheraupt noch deinitialisieren? on Wed, 22 Sep 2004 22:00:52 GMT]]></title><description><![CDATA[<p>Vertrag vs. Implementation:</p>
<p>Der &quot;Vertrag&quot; (also die zugehörige Dokumentation - MSDN) fordert von dir, den DC wieder freizugeben.</p>
<p>Die aktuelle Implementation könnte dich für das nicht-releasen mit Rosenblättern überhäufen, und du wärest trotzdem falsch, da Sich die Implementation jederzeit ändern kann.</p>
<p>Daß Microsoft andererseits zusichert, daß dein DC trotzdem freigegeben wird ist ein Vertrag mit mir, nicht mit dir: Sie tun alles, was sie können daß meine Nutzer kein Problem mit meinem Programm haben, egal wie schlecht dein Programm ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/613276</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/613276</guid><dc:creator><![CDATA[peterchen]]></dc:creator><pubDate>Wed, 22 Sep 2004 22:00:52 GMT</pubDate></item><item><title><![CDATA[Reply to Warum übheraupt noch deinitialisieren? on Wed, 22 Sep 2004 22:03:46 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/5227">@thenoname</a>: - bzgl. ReleaseBuffer:</p>
<p>GetBuffer gibt deaktiviert die interne Referenzzählung, um dir schreibenden Zugriff auf das String-Buffer zu gewährleisten. Mit ReleaseBuffer zeigst du an, daß du dies nicht mehr benötigst, und die automatische Speicherverwaltung wieder aktiviert werden soll.</p>
<p>[edit]<br />
Der Speicher wird vom Destruktor freigegeben, auch wenn du ReleaseBuffer &quot;vergißt&quot;.</p>
<p>Das läßt sich sicherlich auch anderweitig bewerkstelligen, die Frage ist nur: zu welchen Implementations- und Performance-Kosten? Wenn du permanent schreibenden Zugriff brauchst, kommst du mit einem anderen Datentyp (z.B. vector&lt;TCHAR&gt;) oft besser.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/613280</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/613280</guid><dc:creator><![CDATA[peterchen]]></dc:creator><pubDate>Wed, 22 Sep 2004 22:03:46 GMT</pubDate></item><item><title><![CDATA[Reply to Warum übheraupt noch deinitialisieren? on Thu, 23 Sep 2004 08:36:38 GMT]]></title><description><![CDATA[<p>JWolfram schrieb:</p>
<blockquote>
<p>Hallo,</p>
<p>die Literatur predigt z.B. Gerätekontexte beim Beenden des Programms zu deinitalisieren.<br />
Aber ist es denn nicht so, dass Windows (NT/2000/XP) dies bereits zuverlässig von selbst macht?</p>
</blockquote>
<p>Jo, ist so. Interesiert keine sau ob du in der WM_DESTROY dein zeugs wieder freigibst (ausser denen die deinen programmierstil bewerten).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/613427</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/613427</guid><dc:creator><![CDATA[CMatt]]></dc:creator><pubDate>Thu, 23 Sep 2004 08:36:38 GMT</pubDate></item><item><title><![CDATA[Reply to Warum übheraupt noch deinitialisieren? on Thu, 23 Sep 2004 18:19:09 GMT]]></title><description><![CDATA[<blockquote>
<p>Jo, ist so. Interesiert keine sau</p>
</blockquote>
<p>Zum Glück werden Code Reviews nicht von Säuen durchgeführt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/613772</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/613772</guid><dc:creator><![CDATA[peterchen]]></dc:creator><pubDate>Thu, 23 Sep 2004 18:19:09 GMT</pubDate></item><item><title><![CDATA[Reply to Warum übheraupt noch deinitialisieren? on Thu, 23 Sep 2004 18:26:46 GMT]]></title><description><![CDATA[<p>Normalerweise muss man ja auch Resourcen schon früher freigeben als bei Programmende.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/613780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/613780</guid><dc:creator><![CDATA[normal....]]></dc:creator><pubDate>Thu, 23 Sep 2004 18:26:46 GMT</pubDate></item><item><title><![CDATA[Reply to Warum übheraupt noch deinitialisieren? on Thu, 23 Sep 2004 19:46:32 GMT]]></title><description><![CDATA[<p>win2k/xp mag ja selber aufräumen, aber z.B. mit GDI-Resourcen unter Win9x wird man schnell seine Freude kriegen wenn man erzeugte GDI-Objekte nicht wieder freigibt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/613848</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/613848</guid><dc:creator><![CDATA[geeky]]></dc:creator><pubDate>Thu, 23 Sep 2004 19:46:32 GMT</pubDate></item></channel></rss>