<?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[Speicherallokierung in C++]]></title><description><![CDATA[<p>Hi,</p>
<p>Ich habe eine Frage. Ich habe kürzlich eine eigene Stringklasse programmiert. Dabei ist mir etwas aufgefallen. Wenn ich einen String an einen schon vorhandenen anfügen wollte musste ich den Pointer auf den alten Speicherbereich löschen, Platz für den neuen schaffen alten und neuen String hineinkopieren... wie dem auch sei. Bei der C-Standardbibliothek gibt es eine Funktion names realloc() oder so ähnlich. Ich wollte nur fragen ob es so etwas ähnliches in der C++-Standardbibliothek vorhanden ist oder ob man &quot;es&quot; manuell(new delete) machen muss...</p>
<p>cya<br />
DEADBEEF</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/147733/speicherallokierung-in-c</link><generator>RSS for Node</generator><lastBuildDate>Fri, 04 Sep 2026 10:23:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/147733.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 19 May 2006 12:22:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Speicherallokierung in C++ on Fri, 19 May 2006 12:22:50 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>Ich habe eine Frage. Ich habe kürzlich eine eigene Stringklasse programmiert. Dabei ist mir etwas aufgefallen. Wenn ich einen String an einen schon vorhandenen anfügen wollte musste ich den Pointer auf den alten Speicherbereich löschen, Platz für den neuen schaffen alten und neuen String hineinkopieren... wie dem auch sei. Bei der C-Standardbibliothek gibt es eine Funktion names realloc() oder so ähnlich. Ich wollte nur fragen ob es so etwas ähnliches in der C++-Standardbibliothek vorhanden ist oder ob man &quot;es&quot; manuell(new delete) machen muss...</p>
<p>cya<br />
DEADBEEF</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1060921</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1060921</guid><dc:creator><![CDATA[0xDEADBEEF]]></dc:creator><pubDate>Fri, 19 May 2006 12:22:50 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherallokierung in C++ on Fri, 19 May 2006 12:25:55 GMT]]></title><description><![CDATA[<p>Nein in C++ gibt es kein Äquivalent zu realloc - das mußt du manuell erledigen (größeren Speicher anlegen, kopieren, löschen). Aber du könntest dir auch etwas Reserve schaffen, indem du dir anfangs mehr Speicher anforderst als tatsächlich benötigt wird (so arbeiten z.B. std::string oder std::vector).</p>
<p>PS: Wenn du nur ebene char-Bereiche reservieren und verwalten willst - malloc() und seine Verwandten arbeiten auch unter C++ noch problemlos.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1060924</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1060924</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 19 May 2006 12:25:55 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherallokierung in C++ on Fri, 19 May 2006 12:36:35 GMT]]></title><description><![CDATA[<p>Erstmal danke für die Antwort. Das Problem hast du schon angesprochen, ich will dieses Wochenende eine eigene Template-Array Klasse schreiben. Wenn ich nun ein neues Element in das Array speichern möchte muss ich den kompletten Speicherbereich löschen und wieder neu anlegen. Da ich die Klasse für meine &quot;Engine&quot; benutzen will werdenn int dieser Array-Klasse vorraussichtlich Ressourcen(Texturen, Meshes usw.) gespeichert. Wenn ich nun bei jedem neuen Element den kompletten Speicher lösche und wieder erstelle befürchte ich Performanceeinbusen, und die C Bibo wollte ich eigendlich nicht verwenden. Irgendjemand eine Idee???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1060936</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1060936</guid><dc:creator><![CDATA[0xDEADBEEF]]></dc:creator><pubDate>Fri, 19 May 2006 12:36:35 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherallokierung in C++ on Fri, 19 May 2006 12:44:14 GMT]]></title><description><![CDATA[<p>Wenn es dir nicht auf die Zugriffsgeschwindigkeit ankommt, bau die doch eine velinkte Liste als Grundstruktur. Andernfalls kannst du auch die STL-Containerklassen verwenden.</p>
<p>Und niemand zwingt dich, nur für die belegten Elemente Platz anzufordern. Du kannst dir die Kapazität (maximaler Platz im Array) und Größe (Anzahl belegter Arrayfelder) getrennt merken - und erst wenn du die Kapazität erreicht hast, mußt du umkopieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1060942</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1060942</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 19 May 2006 12:44:14 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherallokierung in C++ on Fri, 19 May 2006 12:59:33 GMT]]></title><description><![CDATA[<p>Das mit dem Reservespeicher ist gar keine so schlechte Idee, aber irgendwie stresst mich es wenn ich zuviel Speicher benutze als überhaupt nötig. Ich suche gerade in dem Windows2003 Platform SDK nach dem Quelltext der realloc Funktion, werde aber irgendwie nicht fündig. In der malloc.h steht die Funktionsdeklaration aber in der malloc.cpp finde ich die Definition nicht. Mich würde nämlich interessieren wie es diese Funktion bewerkstelligt Speicher zu reallokieren.</p>
<p>Mfg,</p>
<p>DEADBEEF</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1060965</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1060965</guid><dc:creator><![CDATA[0xDEADBEEF]]></dc:creator><pubDate>Fri, 19 May 2006 12:59:33 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherallokierung in C++ on Fri, 19 May 2006 14:12:43 GMT]]></title><description><![CDATA[<p>Bei mir (BCB6) nutzt realloc eine function namens expand welche versucht den Speicher um den erforderlichen Bereich zu erweitern. Wenn das nicht geht gibt diese dann NULL zurück, so dass hier realloc auch einen neuen Speicherbereich allozieren und die Daten dann kopieren muss (natürlich ohne Konstruktor und Destruktoraufrufe).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1061036</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1061036</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 19 May 2006 14:12:43 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherallokierung in C++ on Fri, 19 May 2006 15:02:04 GMT]]></title><description><![CDATA[<p>Wo is denn eigentlich des Problem mit realloc()? Versteh ich irgendwie net. Gehört doch genauso zum C++ Standard dazu. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> Sollte in &quot;cstdlib&quot; deklariert sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1061064</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1061064</guid><dc:creator><![CDATA[bluecode]]></dc:creator><pubDate>Fri, 19 May 2006 15:02:04 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherallokierung in C++ on Fri, 19 May 2006 15:06:28 GMT]]></title><description><![CDATA[<p>Lies mal hier<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-142372.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-142372.html</a><br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-146020.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-146020.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1061070</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1061070</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 19 May 2006 15:06:28 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherallokierung in C++ on Fri, 19 May 2006 15:09:15 GMT]]></title><description><![CDATA[<p>k, thx. Jetzt versteh ichs <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1061071</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1061071</guid><dc:creator><![CDATA[bluecode]]></dc:creator><pubDate>Fri, 19 May 2006 15:09:15 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherallokierung in C++ on Fri, 19 May 2006 16:40:01 GMT]]></title><description><![CDATA[<p>Du könntest in den Sourcen von der glibc nachsehen.<br />
Im Großen und Ganzen wird realloc nachprüfen ob der freie Platz nach dem Pointer ausreicht und dann einfach diesen Bereich hinzunehmen.<br />
Wenn nicht, dann führt realloc eben &quot;malloc&quot;, &quot;memcpy&quot; und &quot;free&quot; aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1061140</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1061140</guid><dc:creator><![CDATA[hehejo]]></dc:creator><pubDate>Fri, 19 May 2006 16:40:01 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherallokierung in C++ on Fri, 19 May 2006 22:21:47 GMT]]></title><description><![CDATA[<p>0xDEADBEEF schrieb:</p>
<blockquote>
<p>Das mit dem Reservespeicher ist gar keine so schlechte Idee, aber irgendwie stresst mich es wenn ich zuviel Speicher benutze als überhaupt nötig. Ich suche gerade in dem Windows2003 Platform SDK nach dem Quelltext der realloc Funktion, werde aber irgendwie nicht fündig.</p>
</blockquote>
<p>Selbst wenn du die Implementation von realloc findest (welche ja je nach Plattform unterschiedlich ist), hilft dir das nicht wirklich weiter. Besser ist es, du verwendest für deine Speicherreservierung eine sinnvolle Strategie. Diese kannst du deiner Template Klasse ja als Policy mitgeben. Sinnvoll wäre zB, immer wenn mehr Speicher erforderlich ist als vorhanden, 1,5 mal soviel Speicher wie benötigt zu reservieren. Den Faktor kannst du dann später anpassen und messen, was ein optimaler Kompromiss aus Laufzeitgeschwindigkeit und Speicherverbrauch ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1061314</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1061314</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Fri, 19 May 2006 22:21:47 GMT</pubDate></item></channel></rss>