<?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[Memory Leak - und danach?]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich bin mir nicht mehr sicher aber ich meine gelesen(gehört?) zu haben, dass moderne Betriebssysteme (Windows XP, 2003,...) Speicherlöscher mittlerweile &quot;entdecken&quot;.<br />
Also meine App verursacht beim Beenden ein Speicherloch. Normalerweise ist dieser Speicherbereich erst wieder nach dem Rechnerneustart verfügbar. Bei den moderneren wird der aber wieder während der laufenden Sitzung zur Verfügung gestellt. Ist diese Information korrekt?</p>
<p>P.S.: Wie sieht das unter Linux aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/145933/memory-leak-und-danach</link><generator>RSS for Node</generator><lastBuildDate>Thu, 03 Sep 2026 15:32:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/145933.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 02 May 2006 15:08:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Memory Leak - und danach? on Tue, 02 May 2006 15:28:25 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich bin mir nicht mehr sicher aber ich meine gelesen(gehört?) zu haben, dass moderne Betriebssysteme (Windows XP, 2003,...) Speicherlöscher mittlerweile &quot;entdecken&quot;.<br />
Also meine App verursacht beim Beenden ein Speicherloch. Normalerweise ist dieser Speicherbereich erst wieder nach dem Rechnerneustart verfügbar. Bei den moderneren wird der aber wieder während der laufenden Sitzung zur Verfügung gestellt. Ist diese Information korrekt?</p>
<p>P.S.: Wie sieht das unter Linux aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1049652</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1049652</guid><dc:creator><![CDATA[HaJo.]]></dc:creator><pubDate>Tue, 02 May 2006 15:28:25 GMT</pubDate></item><item><title><![CDATA[Reply to Memory Leak - und danach? on Tue, 02 May 2006 15:15:28 GMT]]></title><description><![CDATA[<p>Grundsätzlich kannst du dich auf sowas nciht verlassen, räum deinen Kram also selber auf! Gehört einfach zur guten Sitte.<br />
Es mag sein das einige Betriebsysteme sehen das sich ein Programm beendet hat und den Speicher freigeben, aber verlassen sollte amn sich darauf nicht!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1049659</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1049659</guid><dc:creator><![CDATA[Mario Sandler]]></dc:creator><pubDate>Tue, 02 May 2006 15:15:28 GMT</pubDate></item><item><title><![CDATA[Reply to Memory Leak - und danach? on Tue, 02 May 2006 15:18:41 GMT]]></title><description><![CDATA[<p>Tut mir leid, aber falsch <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>
<p>Wenn Du dem OS den Speicher nicht zurückgibst, wird es nicht entscheiden, dass Du ihn nicht mehr brauchst. Es wird sich höchstens weigern, Dir weiteren Speicher zuzuteilen.</p>
<p>Sowas kann nur funktionieren wenn die &quot;Benutzer&quot; des allokierten Speichers überwacht werden (etwa durch Referenzzählung), und das nennt man dann Garbage Collection, die Standard C++ bekanntlich nicht mitbringt.</p>
<p>EDIT:<br />
Hups, habe ich da was falsch verstanden?<br />
Ist mit &quot;Neustart&quot; ein Rechnerneustart oder ein Programmneustart gemeint?</p>
<p>EDIT2:<br />
Falls zweiteres, ein beendetes Programm abzuräumen bereitet modernen BS keine Probleme (nichtmal Windows :D) - aber ich schliesse mich Storm an, dass Du das Problem nicht umschiffen sondern aufspüren solltest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1049660</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1049660</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 02 May 2006 15:18:41 GMT</pubDate></item><item><title><![CDATA[Reply to Memory Leak - und danach? on Tue, 02 May 2006 15:19:34 GMT]]></title><description><![CDATA[<p><a href="http://Storm.Xapek.de" rel="nofollow">Storm.Xapek.de</a> schrieb:</p>
<blockquote>
<p>Grundsätzlich kannst du dich auf sowas nciht verlassen, räum deinen Kram also selber auf! Gehört einfach zur guten Sitte.<br />
Es mag sein das einige Betriebsysteme sehen das sich ein Programm beendet hat und den Speicher freigeben, aber verlassen sollte amn sich darauf nicht!</p>
</blockquote>
<p>Um Himmels Willen. Ich sorge stets dafür meine Speicher aufzuräumen. Das OS als etvl. GC ausnutzen ist nicht sonderlich elegant. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /></p>
<p>Es war nur eine generelle Frage, da Speicherlöcher immer mal auftreten können. Ich arbeite derzeit an Webapplikationen. Deshalb interssiert mich ob das Server-OS sich im Fall des Falles darum kümmert. Nicht das der Speicher nach 1000 Aufrufen in die Knie geht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1049667</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1049667</guid><dc:creator><![CDATA[HaJo.]]></dc:creator><pubDate>Tue, 02 May 2006 15:19:34 GMT</pubDate></item><item><title><![CDATA[Reply to Memory Leak - und danach? on Tue, 02 May 2006 15:24:09 GMT]]></title><description><![CDATA[<p>Gerade bei servern sit es wichtig penibel darauf zu achten das kein speicher &quot;verloren&quot; geht. Die Programme sollen schließelich zum Teil monate laufen, und oft ist ein reboot inakzeptabel. Wenn du darauf achtest hast du kein Problem, fals dennoch etwas schiefgeht kannst du immernoch hoffen das ein wunder geschieht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1049672</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1049672</guid><dc:creator><![CDATA[Mario Sandler]]></dc:creator><pubDate>Tue, 02 May 2006 15:24:09 GMT</pubDate></item><item><title><![CDATA[Reply to Memory Leak - und danach? on Tue, 02 May 2006 15:30:55 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>EDIT:<br />
Hups, habe ich da was falsch verstanden?<br />
Ist mit &quot;Neustart&quot; ein Rechnerneustart oder ein Programmneustart gemeint?</p>
<p>EDIT2:<br />
Falls zweiteres, ein beendetes Programm abzuräumen bereitet modernen BS keine Probleme (nichtmal Windows :D) - aber ich schliesse mich Storm an, dass Du das Problem nicht umschiffen sondern aufspüren solltest.</p>
</blockquote>
<p>Habe es mal geändert. Ich meinte Rechnerneustart. Aber das OS räumt also schon nach dem Programmneustart/-ende und auch nach einem Programmabsturz auf, richtig?</p>
<p><a href="http://Storm.Xapek.de" rel="nofollow">Storm.Xapek.de</a> schrieb:</p>
<blockquote>
<p>Gerade bei servern sit es wichtig penibel darauf zu achten das kein speicher &quot;verloren&quot; geht. Die Programme sollen schließelich zum Teil monate laufen, und oft ist ein reboot inakzeptabel. Wenn du darauf achtest hast du kein Problem, fals dennoch etwas schiefgeht kannst du immernoch hoffen das ein wunder geschieht.</p>
</blockquote>
<p>Das ist auch mein Ziel. Aber ich wollte einfach mal für den Fall der Fälle fragen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1049682</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1049682</guid><dc:creator><![CDATA[HaJo.]]></dc:creator><pubDate>Tue, 02 May 2006 15:30:55 GMT</pubDate></item><item><title><![CDATA[Reply to Memory Leak - und danach? on Tue, 02 May 2006 15:42:01 GMT]]></title><description><![CDATA[<p><strong>Was du gehört hast gilt</strong> für Programmierer mit Java und (was ja moderner trend von WinXP ist) - fürs MS .NET Framework. Der überprüft, ob du speicher &quot;verloren&quot; hast und macht den frei. <strong>ABER:</strong> das passiert nur, wenn dem system das frei speicher ausgeht, außerdem ist es eine recht lange sache, bringt performance-verlust.</p>
<p>Also, grundsätzlich: immer den speicher selber aufräumen. Wenn du eine Serveranwendung programmierst, dann wäre trotzdem .NET gute wahl - denn niemand ist perfekt, irgendwas geht dir irgendwann verloren, und .NET sorgt dafür, das es keine instabilität deswegen gibt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1049691</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1049691</guid><dc:creator><![CDATA[Maverick89]]></dc:creator><pubDate>Tue, 02 May 2006 15:42:01 GMT</pubDate></item><item><title><![CDATA[Reply to Memory Leak - und danach? on Tue, 02 May 2006 15:47:57 GMT]]></title><description><![CDATA[<p>Maverick89 schrieb:</p>
<blockquote>
<p><strong>Was du gehört hast gilt</strong> für Programmierer mit Java und (was ja moderner trend von WinXP ist) - fürs MS .NET Framework. Der überprüft, ob du speicher &quot;verloren&quot; hast und macht den frei. <strong>ABER:</strong> das passiert nur, wenn dem system das frei speicher ausgeht, außerdem ist es eine recht lange sache, bringt performance-verlust.</p>
</blockquote>
<p>Das heißt, es wird auch nichts nach dem Programmende aufgeräumt obwohl die interne Prozessverwaltung des OS ja sieht, dass der Speicherbereich des gerade geschlossenen Prozesses nicht leer ist.</p>
<p>Maverick89 schrieb:</p>
<blockquote>
<p>Also, grundsätzlich: immer den speicher selber aufräumen. Wenn du eine Serveranwendung programmierst, dann wäre trotzdem .NET gute wahl - denn niemand ist perfekt, irgendwas geht dir irgendwann verloren, und .NET sorgt dafür, das es keine instabilität deswegen gibt</p>
</blockquote>
<p>An und für sich stimme ich dem zu. Auch gerade bei Webapplikationen ist das .NET Framework eine wahre Goldgrube. Unter anderem laufen .NET Apps leider nicht ohne weiteres auf Linuxsystemen. Und Mono kann ich leider nicht auf dem Linuxserver installieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1049693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1049693</guid><dc:creator><![CDATA[HaJo.]]></dc:creator><pubDate>Tue, 02 May 2006 15:47:57 GMT</pubDate></item><item><title><![CDATA[Reply to Memory Leak - und danach? on Tue, 02 May 2006 15:58:10 GMT]]></title><description><![CDATA[<blockquote>
<p>Das heißt, es wird auch nichts nach dem Programmende aufgeräumt obwohl die interne Prozessverwaltung des OS ja sieht, dass der Speicherbereich des gerade geschlossenen Prozesses nicht leer ist.</p>
</blockquote>
<p>also ich meinte das run-time.</p>
<p>nach beenden des prozesses ist was anderes. Ich glaub dass es bei NT+ aufgeräumt wird, genau kann ichs dir nicht sagen, aber man kann es ja leicht ausprobieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1049702</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1049702</guid><dc:creator><![CDATA[Maverick89]]></dc:creator><pubDate>Tue, 02 May 2006 15:58:10 GMT</pubDate></item><item><title><![CDATA[Reply to Memory Leak - und danach? on Tue, 02 May 2006 16:00:32 GMT]]></title><description><![CDATA[<p>HaJo. schrieb:</p>
<blockquote>
<p>Das heißt, es wird auch nichts nach dem Programmende aufgeräumt obwohl die interne Prozessverwaltung des OS ja sieht, dass der Speicherbereich des gerade geschlossenen Prozesses nicht leer ist.</p>
</blockquote>
<p>Lass Dir nix einreden. Maverick89 redet von Garbage Collection, nicht von Memory Management <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>
<p>Wenn die blöde SharpDevelop-Beta mal wieder den Rechner runterzieht, weil er meint 850 MB virtuellen Speicher belegen zu müssen, kille ich den Prozess und der Speicher ist wieder frei. (Falls jetzt das Argument kommt SharpDevelop ist .NET - a) wird es beim Installieren native compiliert und b) überlässt ein Prozess-Kill dem Framework wenig Gelegenheit aufzuräumen)</p>
<p>EDIT: Ok, hat sich gerade (s.o.) geklärt</p>
<p>Maverick89 schrieb:</p>
<blockquote>
<p>Also, grundsätzlich: immer den speicher selber aufräumen. Wenn du eine Serveranwendung programmierst, dann wäre trotzdem .NET gute wahl - denn niemand ist perfekt, irgendwas geht dir irgendwann verloren, und .NET sorgt dafür, das es keine instabilität deswegen gibt</p>
</blockquote>
<blockquote>
<p>An und für sich stimme ich dem zu.</p>
</blockquote>
<p><strong>Ich auch</strong> (nur dass das nicht den Anschein erweckt <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/1049703</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1049703</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 02 May 2006 16:00:32 GMT</pubDate></item><item><title><![CDATA[Reply to Memory Leak - und danach? on Wed, 03 May 2006 08:16:22 GMT]]></title><description><![CDATA[<p>Alle moderneren BS &quot;ünterstuetzen&quot; das, mehr oder weniger gut ...</p>
<p>Wenn du in unix nen prozess killst, wird auch aller Speicher den er beim Speichermanager allokiert hat (Pid), wieder freigegeben</p>
<p>Windows genau so ... zumindest behaupted das MS ^^<br />
Kann man aber leicht selber pruefen mit den entsprechenden Tools, ... Speicher allokieren, programm beenden lassen / oder per Taskmanager killen, und voiala, weg isser ^^</p>
<p>Probleme sind eher, wennd er prozess sich ned 100% killen laaesst, und verwaist irgendwo noch als leiche dahinduempelt.</p>
<p>Das entbindet natuerlich nicht davon seinen speicher selber wieder freizugeben ... gruende dafuer gibt es tausende ...</p>
<p>Ciao ..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050066</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050066</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Wed, 03 May 2006 08:16:22 GMT</pubDate></item><item><title><![CDATA[Reply to Memory Leak - und danach? on Wed, 03 May 2006 08:25:43 GMT]]></title><description><![CDATA[<p>RHBaum schrieb:</p>
<blockquote>
<p>Probleme sind eher, wennd er prozess sich ned 100% killen laaesst, und verwaist irgendwo noch als leiche dahinduempelt.</p>
</blockquote>
<p>Und ein weiteres Problem dürfte sein, daß ein Programm mitunter mehr reserviert als nackten Speicher - und File-Handles oder Datenbank-Verbindungen wird dein Betriebssystem ziemlich sicher NICHT freigeben, wenn du das Programm killst (oder ohne die nötigen Aufräumarbeiten beendest).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050074</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050074</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 03 May 2006 08:25:43 GMT</pubDate></item><item><title><![CDATA[Reply to Memory Leak - und danach? on Wed, 03 May 2006 08:45:17 GMT]]></title><description><![CDATA[<p>Filehandles räumt das Betriebssystem schon auf (zumindest Linux und alle unixoide, die ich so kenne), bei Datenbankressourcen hängt ja meist noch ein Server dahinter, der seinerseits Resourcen für den Client belegt hält (zumindest bis zu irgendeinem Timeout) wenn dieser gekillt wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050097</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 03 May 2006 08:45:17 GMT</pubDate></item><item><title><![CDATA[Reply to Memory Leak - und danach? on Wed, 03 May 2006 09:15:44 GMT]]></title><description><![CDATA[<p>Unter Unix werden z.B. SysV-Shared-Memory-Segmente nicht automatisch freigegeben, temporäre Dateien werden natürlich auch nicht automatisch gelöscht. Der Rest, insbesondere normal allozierter Speicher, natürlich schon! Ein Speicherleck, was über das Programmende hinweg besteht, ist schon ein ziemlich harter Brocken und sollte unbedingt gefixt werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050122</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050122</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Wed, 03 May 2006 09:15:44 GMT</pubDate></item><item><title><![CDATA[Reply to Memory Leak - und danach? on Wed, 03 May 2006 09:19:48 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>Filehandles räumt das Betriebssystem schon auf (zumindest Linux und alle unixoide, die ich so kenne)</p>
</blockquote>
<p>Es gibt hier auch Leute, die es tatsächlich gewagt haben, ein MS-System zu verwenden <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>
<p>Und außerdem waren die Beispiele oben frei aus der Luft gegriffen - wenn das System die verwendeten Ressourcen tatsächlich selber freigeben kann, hast du Glück. Aber es ist besser, du kümmerst dich selber darum, dann bist du auf der sicheren Seite.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050125</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050125</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 03 May 2006 09:19:48 GMT</pubDate></item><item><title><![CDATA[Reply to Memory Leak - und danach? on Sat, 06 May 2006 10:54:21 GMT]]></title><description><![CDATA[<p>Wenn du ein Programm (egal ob selbst geschriebenes oder nicht) beendest, dann sind dessen (Speicher-)Resourcen auf <em>JEDEM</em> Betriebssystem (das im <a href="http://de.wikipedia.org/wiki/Protected_Mode" rel="nofollow">Protected Mode</a> läuft, also alle Windows ab 95/NT, alle Unixe [weis nicht genau, aber es gibt bestimmt auch welche die im Real Mode laufen...], etc...) wieder freigegeben.</p>
<p>Wie das mit anderen Dingen ist, wenn du das Programm einfach killst, ist unterschiedlich:</p>
<ol>
<li>Socketverbindungen werden normal 'geclosed'. (Bei TCP noch ein client terminated Packet gesendet)</li>
<li>Aus Punkt 1 folgert dann auch, dass alle Datenbank Verbindungen beendet wurden.</li>
<li>Bei OpenGL/DirectX ist mir kein Fehlverhalten bekannt, der Grafikkartenspeicher wird ebenfalls freigegeben, sowie die Fragment/Vertex Shader.</li>
<li>Sehr fehleranfällig sind nach meiner Erfahrung alle Dinge die mit TV Karten zu tun haben, wenn man da nicht richtig deinited dann war es das meistens.</li>
<li>Ansonsten ist das Verhalten auch stark von der Platform abhängig.</li>
</ol>
<p>Grundsätzlich ist nur noch zu sagen, wie auch schon ein Vorgänger sagte: <strong>Niemals</strong> mit dem Ziel programmieren, dass das OS &quot;das schon macht&quot;. Immer schön Destruktoren benutzen, zu jedem new/malloc gehört auch ein delete/free.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1051960</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1051960</guid><dc:creator><![CDATA[Firebyte**Username]]></dc:creator><pubDate>Sat, 06 May 2006 10:54:21 GMT</pubDate></item><item><title><![CDATA[Reply to Memory Leak - und danach? on Sat, 06 May 2006 17:31:00 GMT]]></title><description><![CDATA[<p>Was sagt ihr dazu: <a href="http://www.fachschaft.informatik.tu-darmstadt.de/forum/viewtopic.php?t=4057" rel="nofollow">http://www.fachschaft.informatik.tu-darmstadt.de/forum/viewtopic.php?t=4057</a>?<br />
Aehnlichen Effekt hatte ich unter Linux. Als ich mit der Arbeit fertig war und Quake spielen wollte, ruckelte es mit 5fps vor sich hin.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1052162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1052162</guid><dc:creator><![CDATA[Apollon]]></dc:creator><pubDate>Sat, 06 May 2006 17:31:00 GMT</pubDate></item></channel></rss>