<?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[malloc() free() realloc()?]]></title><description><![CDATA[<p>Hi,</p>
<p>die C++ quasi Gegenstücke zu malloc() und free() sind ja new und delete bzw new[] und delete[]. Habe ich das so richtig verstanden? (Denke mal doch ;))<br />
Nur gibts jetzt auch was für realloc?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/281968/malloc-free-realloc</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 10:29:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/281968.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 11 Feb 2011 11:05:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to malloc() free() realloc()? on Fri, 11 Feb 2011 11:05:49 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>die C++ quasi Gegenstücke zu malloc() und free() sind ja new und delete bzw new[] und delete[]. Habe ich das so richtig verstanden? (Denke mal doch ;))<br />
Nur gibts jetzt auch was für realloc?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2019542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2019542</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Fri, 11 Feb 2011 11:05:49 GMT</pubDate></item><item><title><![CDATA[Reply to malloc() free() realloc()? on Fri, 11 Feb 2011 11:09:18 GMT]]></title><description><![CDATA[<p>Ja, im Prinzip sind es die Gegenstücke im Bezug auf manuelle Speicherverwaltung.</p>
<p>Wobei du in C++ eben trotzdem <strong>nicht</strong> <code>new</code> schreibst, wo ein <code>malloc()</code> in C stand. Vermeide manuelle Speicherverwaltung so oft es geht, und benutze RAII. Dinge wie Container und Smart-Pointer sind wohl die bekanntesten Beispiele für das RAII-Idiom.</p>
<p>Das mit <code>realloc()</code> erledigt sich dann auch gleich, weil z.B. STL-Container sich automatisch vergrössern, ohne dass du explizit was tun musst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2019546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2019546</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 11 Feb 2011 11:09:18 GMT</pubDate></item><item><title><![CDATA[Reply to malloc() free() realloc()? on Fri, 11 Feb 2011 15:31:06 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Das mit <code>realloc()</code> erledigt sich dann auch gleich, weil z.B. STL-Container sich automatisch vergrössern, ohne dass du explizit was tun musst.</p>
</blockquote>
<p>Und was verwenden die? Im Prinzip müssten sie ja auch realloc() verwenden, weil es u.U. effizienter ist, als neuen Speicher mit new[] anzufordern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2019728</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2019728</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Fri, 11 Feb 2011 15:31:06 GMT</pubDate></item><item><title><![CDATA[Reply to malloc() free() realloc()? on Fri, 11 Feb 2011 15:34:15 GMT]]></title><description><![CDATA[<p>wxSkip schrieb:</p>
<blockquote>
<p>Und was verwenden die?</p>
</blockquote>
<p>Intelligente Allokationsstrategien, sodass z.B. nur bei Zweierpotenzen eine Anforderung notwendig wird. Dadurch sind <code>push_back()</code> etc. amortisiert O(1).</p>
<p>wxSkip schrieb:</p>
<blockquote>
<p>Im Prinzip müssten sie ja auch realloc() verwenden, weil es u.U. effizienter ist, als neuen Speicher mit new[] anzufordern.</p>
</blockquote>
<p><code>realloc()</code> kannst du in C++ gleich vergessen.</p>
<p>Der Grund ist, dass es manchmal den ganzen Speicherbereich umkopiert, aber du nicht herausfinden kannst, wann. Und byteweises Kopieren von Nicht-PODs ist in C++ undefiniertes Verhalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2019730</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2019730</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 11 Feb 2011 15:34:15 GMT</pubDate></item><item><title><![CDATA[Reply to malloc() free() realloc()? on Fri, 11 Feb 2011 15:36:59 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>wxSkip schrieb:</p>
<blockquote>
<p>Und was verwenden die?</p>
</blockquote>
<p>Intelligente Allokationsstrategien, sodass z.B. nur bei Zweierpotenzen eine Anforderung notwendig wird. Dadurch sind <code>push_back()</code> etc. amortisiert O(1).</p>
<p>wxSkip schrieb:</p>
<blockquote>
<p>Im Prinzip müssten sie ja auch realloc() verwenden, weil es u.U. effizienter ist, als neuen Speicher mit new[] anzufordern.</p>
</blockquote>
<p><code>realloc()</code> kannst du in C++ gleich vergessen.</p>
<p>Der Grund ist, dass es manchmal den ganzen Speicherbereich umkopiert, aber du nicht herausfinden kannst, wann. Und byteweises Kopieren von Nicht-PODs ist in C++ undefiniertes Verhalten.</p>
</blockquote>
<p>Stimmt, nicht dran gedacht <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="😉"
    /> .<br />
Dennoch könnte es ja sein, dass wenn du Speicher mit new[] anforderst, dahinter noch freier Speicher liegt, den du theoretisch nutzen könntest. Warum gibt es keine solche Allokationsfunktionen in C und C++, mit denen man abfragen kann, wie viel Speicher das Betriebssystem dahinter noch freihält und diesen dann ggf. nutzen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2019733</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2019733</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Fri, 11 Feb 2011 15:36:59 GMT</pubDate></item><item><title><![CDATA[Reply to malloc() free() realloc()? on Fri, 11 Feb 2011 16:19:48 GMT]]></title><description><![CDATA[<p>std::allocator (welchen die Standard-Container benutzen) hat ein Interface, das einer Implementation ein solches Verhalten ermöglicht. Ob es eine Implementation gibt, die davon Gebrauch macht, weiß ich nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2019760</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2019760</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Fri, 11 Feb 2011 16:19:48 GMT</pubDate></item><item><title><![CDATA[Reply to malloc() free() realloc()? on Sat, 12 Feb 2011 01:50:31 GMT]]></title><description><![CDATA[<p>seldon schrieb:</p>
<blockquote>
<p>std::allocator (welchen die Standard-Container benutzen) hat ein Interface, das einer Implementation ein solches Verhalten ermöglicht. Ob es eine Implementation gibt, die davon Gebrauch macht, weiß ich nicht.</p>
</blockquote>
<p>Du meinst vermutlich den &quot;hint&quot; den man bei &quot;allocate&quot; mitgeben kann.</p>
<p>Damit kann man allerdings realloc() nicht nachbilden, da man bei std::allocator trotzdem wieder zwei getrennte Allokationen hat, die man auch getrennt wieder freigeben muss.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2019948</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2019948</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 12 Feb 2011 01:50:31 GMT</pubDate></item></channel></rss>