<?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[CString Log]]></title><description><![CDATA[<p>Hi<br />
Um bestimmte Events zu loggen benutze ich einen CString.<br />
Also ganz einfach immer wenn ein Event eintritt &quot;LOG += Event&quot; wobei 'LOG' ein CString ist der bereits in der Klasse als &quot;CString LOG;&quot; definiert wurde und 'Event' nur innerhalb der Funktion definiert ist. Nun habe ich durch ein anderes Programm festgestellt, dass wenn dieser Log meiner Anwendung ca. 5MB erreicht hat, sich durch unregelmäßige Sprünge immer mehr vergrößert. Bei den selben Daten wird der Log zum Beispiel innerhalb relativ kurzer Zeit gleich um mehrere MB größer, wofür er vorher jedoch mehrere Stunden gebraucht hat.<br />
Wie kann das sein und wie kann ich dem Abhilfe schaffen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/167926/cstring-log</link><generator>RSS for Node</generator><lastBuildDate>Fri, 01 May 2026 12:47:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/167926.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 16 Dec 2006 17:43:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to CString Log on Sat, 16 Dec 2006 17:43:12 GMT]]></title><description><![CDATA[<p>Hi<br />
Um bestimmte Events zu loggen benutze ich einen CString.<br />
Also ganz einfach immer wenn ein Event eintritt &quot;LOG += Event&quot; wobei 'LOG' ein CString ist der bereits in der Klasse als &quot;CString LOG;&quot; definiert wurde und 'Event' nur innerhalb der Funktion definiert ist. Nun habe ich durch ein anderes Programm festgestellt, dass wenn dieser Log meiner Anwendung ca. 5MB erreicht hat, sich durch unregelmäßige Sprünge immer mehr vergrößert. Bei den selben Daten wird der Log zum Beispiel innerhalb relativ kurzer Zeit gleich um mehrere MB größer, wofür er vorher jedoch mehrere Stunden gebraucht hat.<br />
Wie kann das sein und wie kann ich dem Abhilfe schaffen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1193036</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1193036</guid><dc:creator><![CDATA[h88u]]></dc:creator><pubDate>Sat, 16 Dec 2006 17:43:12 GMT</pubDate></item><item><title><![CDATA[Reply to CString Log on Sat, 16 Dec 2006 18:01:36 GMT]]></title><description><![CDATA[<p>ich frag mich wieso du einen string über mehrer stunden immer wieder vergrößerst.<br />
wäre es nicht effektiver jedes mal diesen string in einer logdatei zu speichern und jedesmal wenn ein logevent auftritt diesen ans ende der datei zu schreiben. somit würde sich nämlich deine frage und dein problem in luft auflösen <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/1193045</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1193045</guid><dc:creator><![CDATA[LowFly]]></dc:creator><pubDate>Sat, 16 Dec 2006 18:01:36 GMT</pubDate></item><item><title><![CDATA[Reply to CString Log on Sat, 16 Dec 2006 18:05:48 GMT]]></title><description><![CDATA[<p>Das wäre in der Tat eine Lösung. Ich will jedoch nicht unbedingt Speicherplatz außerhalb des eigenen Programms verwenden sondern nur intern. Das muss doch sicherlich irgendwie einigermaßen performant zu lösen sein, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1193047</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1193047</guid><dc:creator><![CDATA[h88u]]></dc:creator><pubDate>Sat, 16 Dec 2006 18:05:48 GMT</pubDate></item><item><title><![CDATA[Reply to CString Log on Sat, 16 Dec 2006 18:45:58 GMT]]></title><description><![CDATA[<p>Nun das hängt mit der Pufferung zusammen.<br />
Meistens wird mehr Speicher reserviert als gebraucht wird. Ist der Puffer nun voll muss ein größerer Puffer allokiert werden und eine übliche Strategie ist es, die aktuelle Größe einfach zu verdoppeln. std::vector macht das z.B. und ich glaube(bin jetzt aber nicht 100% sicher) das CString auch auf diese Art verfährt, Musst mal in der MSDN schmökern <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="🙂"
    /><br />
Das erklärt aber, warum der Speicherverbrauch nach einer größeren Zeitspanne in immer größeren Sprügen ansteigt.</p>
<p>Direkt im CString kannst das nicht lösen. Eine Möglichkeit wäre, anstatt eine.s CString immer einen neuen zu verwenden und z.B. in CStringArray zu halten.<br />
Dann hast du viele kleine CStrings anstatt eines großen der immer mehr durch die Verdopplung frisst</p>
<p>Aberauf Dauer einen String immer mehr aufblähen naja, da wäre eine Logfile, wie schon vorgeschlagen wurde, sicher sinnvoller!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1193068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1193068</guid><dc:creator><![CDATA[Pellaeon]]></dc:creator><pubDate>Sat, 16 Dec 2006 18:45:58 GMT</pubDate></item><item><title><![CDATA[Reply to CString Log on Sun, 17 Dec 2006 03:33:49 GMT]]></title><description><![CDATA[<p>Ah Ok. Danke für die Information. <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/1193203</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1193203</guid><dc:creator><![CDATA[h88u]]></dc:creator><pubDate>Sun, 17 Dec 2006 03:33:49 GMT</pubDate></item><item><title><![CDATA[Reply to CString Log on Sun, 17 Dec 2006 16:03:56 GMT]]></title><description><![CDATA[<p>Es gibt noch die Möglichkeit, selbst mit GetBuffer entsprechend den Speicher vorzuallokieren. Aber ich würde Dir auch eher zu einemKonstrukt mit CStringArray oder std::vector raten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1193534</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1193534</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Sun, 17 Dec 2006 16:03:56 GMT</pubDate></item></channel></rss>