<?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[Speichermanagement in C++]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich hab hier im Forum mal gelesen, dass man es in der Regel<br />
so macht, dass der Speicher von dem freigegeben wurde, der ihn<br />
angefordert hat. Jetzt hab ich nen kleinen HttpClient geschrieben,<br />
der in etwa so arbeiten soll, dass ich sage:</p>
<pre><code class="language-cpp">std::vector&lt;std::pair&lt;char*, char*&gt;&gt;* getHeader();
</code></pre>
<p>Jetzt könnte ich zwar einen vector an die Methode übergeben,<br />
aber die char* müßte ich dann ja immernoch von dem Teil<br />
des Programms löschen lassen, der ihn nicht angefordert hat.</p>
<p>Wie würdet ihr das machen?<br />
Hilft mir ja evtl. etwas wie std::auto_ptr weiter?<br />
Damit hab ich mich noch nicht beschäftigt, werde ich aber jetzt<br />
machen.</p>
<p>Gruß,<br />
*Cpp-Anfänger*</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/159560/speichermanagement-in-c</link><generator>RSS for Node</generator><lastBuildDate>Thu, 10 Sep 2026 14:51:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/159560.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 16 Sep 2006 15:07:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Speichermanagement in C++ on Sat, 16 Sep 2006 15:07:55 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich hab hier im Forum mal gelesen, dass man es in der Regel<br />
so macht, dass der Speicher von dem freigegeben wurde, der ihn<br />
angefordert hat. Jetzt hab ich nen kleinen HttpClient geschrieben,<br />
der in etwa so arbeiten soll, dass ich sage:</p>
<pre><code class="language-cpp">std::vector&lt;std::pair&lt;char*, char*&gt;&gt;* getHeader();
</code></pre>
<p>Jetzt könnte ich zwar einen vector an die Methode übergeben,<br />
aber die char* müßte ich dann ja immernoch von dem Teil<br />
des Programms löschen lassen, der ihn nicht angefordert hat.</p>
<p>Wie würdet ihr das machen?<br />
Hilft mir ja evtl. etwas wie std::auto_ptr weiter?<br />
Damit hab ich mich noch nicht beschäftigt, werde ich aber jetzt<br />
machen.</p>
<p>Gruß,<br />
*Cpp-Anfänger*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1138571</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138571</guid><dc:creator><![CDATA[*Cpp-Anfänger*]]></dc:creator><pubDate>Sat, 16 Sep 2006 15:07:55 GMT</pubDate></item><item><title><![CDATA[Reply to Speichermanagement in C++ on Sat, 16 Sep 2006 15:19:36 GMT]]></title><description><![CDATA[<p>Reservierst du Speicher (für char*) per <em>new</em>? Wenn nicht brauchst du auch keinen freigeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1138581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138581</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Sat, 16 Sep 2006 15:19:36 GMT</pubDate></item><item><title><![CDATA[Reply to Speichermanagement in C++ on Sat, 16 Sep 2006 15:24:01 GMT]]></title><description><![CDATA[<p>Zwar nicht per new, sondern per malloc...</p>
<p>Muss ihn also freigeben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1138586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138586</guid><dc:creator><![CDATA[*Cpp-Anfänger*]]></dc:creator><pubDate>Sat, 16 Sep 2006 15:24:01 GMT</pubDate></item><item><title><![CDATA[Reply to Speichermanagement in C++ on Sat, 16 Sep 2006 15:25:46 GMT]]></title><description><![CDATA[<p>Ein Beispiel wär, für die Übersicht, ganz hilfreich. Ansonsten könntest du es mit Smartpointern versuchen, ja!</p>
<p>grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1138587</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138587</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Sat, 16 Sep 2006 15:25:46 GMT</pubDate></item><item><title><![CDATA[Reply to Speichermanagement in C++ on Sat, 16 Sep 2006 15:47:31 GMT]]></title><description><![CDATA[<p>Grob vereinfacht sieht das später so aus:</p>
<p>Erst soll der Header eingelesen werden:</p>
<pre><code class="language-cpp">void MyClass::readHeader(){
void* response  = readResponse(); // Lies den Response (Zeichenkette) in void*
boolean eoh = false; // end of header
void* linebegin = response;
this-&gt;header = new std::vector&lt;std::pair*&lt;char*, char*&gt;&gt;();
while(!eoh){
    void* endofline = findEndOfLine(linebegin);
    void* delimiter = findDelimiter(linebegin);
    char* key =  (char*)malloc(delimiter-linebegin);
    char* value =  (char*)malloc(endofline-delimiter);
    // Kopiere Inhalte in key und value (mit abschließender '\0')
    std::pair* pair = new std::pair(key, value);
    header-&gt;add(pair);
    // Prüfe end of header
}
}
</code></pre>
<p>und später nur noch</p>
<pre><code class="language-cpp">std::vector&lt;std::pair*&lt;char*, char*&gt;&gt; MyClass::getHeader(){
    return header
}
</code></pre>
<p>Gruß,<br />
*Cpp-Anfänger*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1138598</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138598</guid><dc:creator><![CDATA[*Cpp-Anfänger*]]></dc:creator><pubDate>Sat, 16 Sep 2006 15:47:31 GMT</pubDate></item><item><title><![CDATA[Reply to Speichermanagement in C++ on Sat, 16 Sep 2006 15:56:25 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;boost/shared_array.hpp&gt;

struct free_deleter
{
  void operator()( void* p ) { std::free(p); }
};

// ....

boost::shared_array&lt;char&gt; a(my_malloced_array, free_deleter());
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1138602</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138602</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Sat, 16 Sep 2006 15:56:25 GMT</pubDate></item><item><title><![CDATA[Reply to Speichermanagement in C++ on Sat, 16 Sep 2006 16:01:19 GMT]]></title><description><![CDATA[<p>Wieso verwendest Du 'char*' statt 'std::string'?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1138605</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138605</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Sat, 16 Sep 2006 16:01:19 GMT</pubDate></item><item><title><![CDATA[Reply to Speichermanagement in C++ on Sat, 16 Sep 2006 16:14:08 GMT]]></title><description><![CDATA[<p>Würde std::string irgendwas ändern?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1138617</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138617</guid><dc:creator><![CDATA[*Cpp-Anfänger*]]></dc:creator><pubDate>Sat, 16 Sep 2006 16:14:08 GMT</pubDate></item><item><title><![CDATA[Reply to Speichermanagement in C++ on Sat, 16 Sep 2006 16:15:21 GMT]]></title><description><![CDATA[<p><em>Cpp-Anfänger</em> schrieb:</p>
<blockquote>
<p>Würde std::string irgendwas ändern?</p>
</blockquote>
<p>Ja, es würde eben Dein Problem komplett aus der Welt schaffen, weil std::string intern automatisch für die korrekte Reservierung und Freigabe von Speicher sorgt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1138620</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138620</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Sat, 16 Sep 2006 16:15:21 GMT</pubDate></item><item><title><![CDATA[Reply to Speichermanagement in C++ on Sat, 16 Sep 2006 16:17:56 GMT]]></title><description><![CDATA[<p>Den Code von finix, versteh ich nicht ganz <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<pre><code class="language-cpp">struct free_deleter
{
  void operator()( void* p ) { std::free(p); }
};
</code></pre>
<p>Wann wird denn operator() aufgerufen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1138621</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138621</guid><dc:creator><![CDATA[*Cpp-Anfänger*]]></dc:creator><pubDate>Sat, 16 Sep 2006 16:17:56 GMT</pubDate></item><item><title><![CDATA[Reply to Speichermanagement in C++ on Sat, 16 Sep 2006 16:19:08 GMT]]></title><description><![CDATA[<p>Danke Konrad Rudolph,</p>
<p>wenn das so einfach ist <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/1138622</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138622</guid><dc:creator><![CDATA[*Cpp-Anfänger*]]></dc:creator><pubDate>Sat, 16 Sep 2006 16:19:08 GMT</pubDate></item></channel></rss>