<?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[Problem: Pointer &amp;amp;&amp;amp; Unnötige Daten löschen]]></title><description><![CDATA[<p>Sehr geehrtes Forum,<br />
ich habe mal wieder ein Problem.</p>
<p>Ich weiß nicht genau wie ich es angehen soll, also ich schreibe gerade meine erste kleine Librarys für die Konsole, die den Umgang mit der Konsole erleichtern soll, und die Texte auch viel attraktiver dargestellt werden, z.B. wird der Text char-weise eingegeben, mit pausen bis zu 100 MS, oder selbstdefiniert, oder es listet daten mit Pfeilen (-&gt;) auf, usw.. .<br />
Alles kleinere Spielereien, welche den Umgang mit der Konsole doch nicht so trist und langweilig darstellen sollen.</p>
<p>Auf jeden fall, ich habe eine Methode, und die heiß print(string s).</p>
<pre><code class="language-cpp">void Console::print(string s)
{
// Ich tue hier Sachen mit dem string s

delete &amp;s;
}
</code></pre>
<p>Geht das so? Ich möchte nämlich den string nach dem ausgeben löschen, er soll ja keinen unnötigen Speicherplatz im Arbeitsspeicher einnehmen.</p>
<p>Wie geht das?<br />
-&gt; <strong>Mit Pointern</strong><br />
Das ist mir schon klar, aber wie genau weiß ich nicht, das ist auch meine Frage. Wie kann ich das machen?<br />
Etwa so?</p>
<pre><code class="language-cpp">void Console::print(string* s)
{
// Ich tue hier Sachen mit dem string s
// Wie benutze ich s jetzt? so? : cout &lt;&lt; s*; ???
delete s;
}
</code></pre>
<p>Mit freundlichen und hocherachtungsvollen Grüßen,<br />
Developer::X(); <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/267862/problem-pointer-amp-amp-unnötige-daten-löschen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 06:04:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/267862.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 31 May 2010 14:16:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem: Pointer &amp;amp;&amp;amp; Unnötige Daten löschen on Mon, 31 May 2010 14:16:23 GMT]]></title><description><![CDATA[<p>Sehr geehrtes Forum,<br />
ich habe mal wieder ein Problem.</p>
<p>Ich weiß nicht genau wie ich es angehen soll, also ich schreibe gerade meine erste kleine Librarys für die Konsole, die den Umgang mit der Konsole erleichtern soll, und die Texte auch viel attraktiver dargestellt werden, z.B. wird der Text char-weise eingegeben, mit pausen bis zu 100 MS, oder selbstdefiniert, oder es listet daten mit Pfeilen (-&gt;) auf, usw.. .<br />
Alles kleinere Spielereien, welche den Umgang mit der Konsole doch nicht so trist und langweilig darstellen sollen.</p>
<p>Auf jeden fall, ich habe eine Methode, und die heiß print(string s).</p>
<pre><code class="language-cpp">void Console::print(string s)
{
// Ich tue hier Sachen mit dem string s

delete &amp;s;
}
</code></pre>
<p>Geht das so? Ich möchte nämlich den string nach dem ausgeben löschen, er soll ja keinen unnötigen Speicherplatz im Arbeitsspeicher einnehmen.</p>
<p>Wie geht das?<br />
-&gt; <strong>Mit Pointern</strong><br />
Das ist mir schon klar, aber wie genau weiß ich nicht, das ist auch meine Frage. Wie kann ich das machen?<br />
Etwa so?</p>
<pre><code class="language-cpp">void Console::print(string* s)
{
// Ich tue hier Sachen mit dem string s
// Wie benutze ich s jetzt? so? : cout &lt;&lt; s*; ???
delete s;
}
</code></pre>
<p>Mit freundlichen und hocherachtungsvollen Grüßen,<br />
Developer::X(); <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1904976</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1904976</guid><dc:creator><![CDATA[Developer_X]]></dc:creator><pubDate>Mon, 31 May 2010 14:16:23 GMT</pubDate></item><item><title><![CDATA[Reply to Problem: Pointer &amp;amp;&amp;amp; Unnötige Daten löschen on Mon, 31 May 2010 14:21:46 GMT]]></title><description><![CDATA[<p>Nutze delete dort, wo du auch new benutzt hast. Bei deinem ersten Beispiel: gar nicht. Die Methode bekommt eine Kopie von einem String und die wird automatisch am Ende der Funktion zerlegt.<br />
Bei deinem zweiten Beispiel bekommst zwar einen Pointer und löschst diesen auch (was an sich gültig wäre) aber das ist unschön. Denn alleine schon sowas würde zu einem Problem führen:</p>
<pre><code class="language-cpp">std::string myString = &quot;horst&quot;;
print(&amp;myString); // &lt;-- kracht

std::string *secondString = new std::string(&quot;blupp&quot;);
print(secondString); // &lt;-- geht
print(secondString); // &lt;-- kracht
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1904983</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1904983</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Mon, 31 May 2010 14:21:46 GMT</pubDate></item><item><title><![CDATA[Reply to Problem: Pointer &amp;amp;&amp;amp; Unnötige Daten löschen on Mon, 31 May 2010 14:41:12 GMT]]></title><description><![CDATA[<p>ok da hast du auch wieder recht, danke,</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1904995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1904995</guid><dc:creator><![CDATA[Developer_X]]></dc:creator><pubDate>Mon, 31 May 2010 14:41:12 GMT</pubDate></item><item><title><![CDATA[Reply to Problem: Pointer &amp;amp;&amp;amp; Unnötige Daten löschen on Mon, 31 May 2010 15:32:55 GMT]]></title><description><![CDATA[<p>Übrigens solltest du <strong>niemals</strong> &quot;nützliche&quot; Dinge wie Aufräumaktionen in Funktionen durchführen, in denen es keiner erwartet. <code>print()</code> gibt etwas aus und das war es auch schon.</p>
<p>Meistens fährst du am besten, wenn du dem Benutzer die Speicherverwaltung überlässt (wenn dieser mit <code>std::string</code> &amp; Co. arbeitet, ist das selten ein Problem).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1905044</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1905044</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 31 May 2010 15:32:55 GMT</pubDate></item><item><title><![CDATA[Reply to Problem: Pointer &amp;amp;&amp;amp; Unnötige Daten löschen on Mon, 31 May 2010 16:26:57 GMT]]></title><description><![CDATA[<p>Und du solltest Strings und andere größere Objekte per konstanter Referenz übergeben (const string&amp; s), damit eine unnötige Kopie bei jedem Funktionsaufruf vermieden wird.</p>
<p>Edit: wenn du Funktionen hast, welche die übergebenen Parameter &quot;fressen&quot; (d.h. löschen), solltest du das per std::auto_ptr machen. Damit kann dann nichts mehr schief gehen, außerdem wird der Benutzer dadurch über die Natur der Funktion informiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1905072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1905072</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Mon, 31 May 2010 16:26:57 GMT</pubDate></item></channel></rss>