<?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[[ein.brot in Not] -&amp;gt; Dyn. Mem. zur Laufzeit weiteren allozieren]]></title><description><![CDATA[<p>Hi,<br />
hätte jemand eine Idee wie ich Speicherschonend in Sauberem C++ ein dynamisch erzeugtes Array [muss auch eine Klasse sein können, also fällt realloc etwas in den hintergrund...] zur laufzeit vergrößern kann.</p>
<p>Ich hab nachgeforscht und es wurde empfohlen, entweder ein temp array mit dem alten inhalt zu erzeugen und dann ein neues mit der entsprechend größeren länge, und dann zu kopieren.<br />
Gut, aber das ist bei großen Arrays nicht wirklich Speicherschonend.</p>
<p>Weiter unten im Text stand dann man solle auf die STl ausweichen, sprich vector.<br />
Das doofe daran mir wurde verboten vector zu benutzen... sprich, selber schreiben...<br />
Ich hab gelesen stl::vector benutzt &quot;raw memory&quot;... nur mehr hab ich dazu leider noch nicht in erfahrung bringen können.</p>
<p>Hat wer eine Idee?<br />
Oder was hilfreiches zu raw memory?<br />
oder nen codebruchstück aus der stl::vector?<br />
irgendwas? *g</p>
<p>das zutiefst ergebene brot <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/topic/119218/ein-brot-in-not-gt-dyn-mem-zur-laufzeit-weiteren-allozieren</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 22:06:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/119218.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 29 Aug 2005 16:15:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [ein.brot in Not] -&amp;gt; Dyn. Mem. zur Laufzeit weiteren allozieren on Mon, 29 Aug 2005 16:15:13 GMT]]></title><description><![CDATA[<p>Hi,<br />
hätte jemand eine Idee wie ich Speicherschonend in Sauberem C++ ein dynamisch erzeugtes Array [muss auch eine Klasse sein können, also fällt realloc etwas in den hintergrund...] zur laufzeit vergrößern kann.</p>
<p>Ich hab nachgeforscht und es wurde empfohlen, entweder ein temp array mit dem alten inhalt zu erzeugen und dann ein neues mit der entsprechend größeren länge, und dann zu kopieren.<br />
Gut, aber das ist bei großen Arrays nicht wirklich Speicherschonend.</p>
<p>Weiter unten im Text stand dann man solle auf die STl ausweichen, sprich vector.<br />
Das doofe daran mir wurde verboten vector zu benutzen... sprich, selber schreiben...<br />
Ich hab gelesen stl::vector benutzt &quot;raw memory&quot;... nur mehr hab ich dazu leider noch nicht in erfahrung bringen können.</p>
<p>Hat wer eine Idee?<br />
Oder was hilfreiches zu raw memory?<br />
oder nen codebruchstück aus der stl::vector?<br />
irgendwas? *g</p>
<p>das zutiefst ergebene brot <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/860798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/860798</guid><dc:creator><![CDATA[ein.brot]]></dc:creator><pubDate>Mon, 29 Aug 2005 16:15:13 GMT</pubDate></item><item><title><![CDATA[Reply to [ein.brot in Not] -&amp;gt; Dyn. Mem. zur Laufzeit weiteren allozieren on Mon, 29 Aug 2005 16:22:00 GMT]]></title><description><![CDATA[<p>ein.brot schrieb:</p>
<blockquote>
<p>Ich hab nachgeforscht und es wurde empfohlen, entweder ein temp array mit dem alten inhalt zu erzeugen und dann ein neues mit der entsprechend größeren länge, und dann zu kopieren.</p>
</blockquote>
<p>fast gut.<br />
besser, du erzeugst ein temp-array mit der größeren große und kopierst in das temp-array und vertauscht dann einfach die zeiger von deinem und dem temp-array. so mußte beim verdoppeln der größe nur einmal kopieren. und zum vertausendfachen der größe nur 10-mal kopieren. mit insgesamt nur sovielene elementkopien, wie das array nach dem wachsen für ne größe hat, also durchaus relativ billig. billiger als verkettete listen.</p>
<p>was vector noch zusätzlich macht, ist daß er beim anlegen des speichers nicht alle speicherzellen initialisiert (konstruktor aufruft), sondern sich mit nem zeiger merkt, bis wohin bereits inistialisiert wurde. und bei pushback hupft der zeiger halt eins weiter. siehe &quot;placement new&quot;, wie das genau funktioniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/860801</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/860801</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 29 Aug 2005 16:22:00 GMT</pubDate></item><item><title><![CDATA[Reply to [ein.brot in Not] -&amp;gt; Dyn. Mem. zur Laufzeit weiteren allozieren on Mon, 29 Aug 2005 16:24:20 GMT]]></title><description><![CDATA[<p>ein.brot schrieb:</p>
<blockquote>
<p>ein temp array mit dem alten inhalt zu erzeugen und dann ein neues mit der entsprechend größeren länge, und dann zu kopieren.</p>
</blockquote>
<p>umständlich. neues array mit der benötigten größe erstellen. alten inhalt reinkopieren. altes array löschen.</p>
<blockquote>
<p>Gut, aber das ist bei großen Arrays nicht wirklich Speicherschonend.</p>
</blockquote>
<p>du kannst auch ein bisschen mehr, &quot;auf vorrat&quot; allozieren. dann muss nicht so oft umkopiert werden.</p>
<blockquote>
<p>Das doofe daran mir wurde verboten vector zu benutzen</p>
</blockquote>
<p>nimm ::std::list. oder ::std::deque. <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/860804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/860804</guid><dc:creator><![CDATA[doppelmuffe]]></dc:creator><pubDate>Mon, 29 Aug 2005 16:24:20 GMT</pubDate></item><item><title><![CDATA[Reply to [ein.brot in Not] -&amp;gt; Dyn. Mem. zur Laufzeit weiteren allozieren on Mon, 29 Aug 2005 16:41:34 GMT]]></title><description><![CDATA[<p>doppelmuffe schrieb:</p>
<blockquote>
<p>umständlich. neues array mit der benötigten größe erstellen. alten inhalt reinkopieren. altes array löschen.</p>
</blockquote>
<p>ja, so hab ichs auch gelesen und gemeint, sry, vertippelt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>doppelmuffe schrieb:</p>
<blockquote>
<p>du kannst auch ein bisschen mehr, &quot;auf vorrat&quot; allozieren. dann muss nicht so oft umkopiert werden.</p>
</blockquote>
<p>dafür würde ich geköpft werden <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>
<p>doppelmuffe schrieb:</p>
<blockquote>
<p>nimm ::std::list. oder ::std::deque. <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>
</blockquote>
<p><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="😉"
    /> ja ne is klar <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
<p>*mir grad volkards durchles und ma recharchier*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/860809</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/860809</guid><dc:creator><![CDATA[ein.brot]]></dc:creator><pubDate>Mon, 29 Aug 2005 16:41:34 GMT</pubDate></item><item><title><![CDATA[Reply to [ein.brot in Not] -&amp;gt; Dyn. Mem. zur Laufzeit weiteren allozieren on Mon, 29 Aug 2005 17:34:51 GMT]]></title><description><![CDATA[<p>ein.brot schrieb:</p>
<blockquote>
<p>doppelmuffe schrieb:</p>
<blockquote>
<p>du kannst auch ein bisschen mehr, &quot;auf vorrat&quot; allozieren. dann muss nicht so oft umkopiert werden.</p>
</blockquote>
<p>dafür würde ich geköpft werden <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>
</blockquote>
<p>willst du dynamisch zur leufzeit die objekte einzeln reistopfen können? dann ist auf-vorrat-allokieren ein toller weg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/860840</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/860840</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 29 Aug 2005 17:34:51 GMT</pubDate></item><item><title><![CDATA[Reply to [ein.brot in Not] -&amp;gt; Dyn. Mem. zur Laufzeit weiteren allozieren on Mon, 29 Aug 2005 20:34:49 GMT]]></title><description><![CDATA[<p>ich möchte, ein Feld dynamisch erzeugen, dessen größe man während der laufzeit beliebig verändern kann. Dabei aber keine Grenzen [außer Ram größe, etc.] hat.</p>
<p>Aber es soll am besten keinen unnötigen Speicher verbrauchen.<br />
Also fällt vor allozieren oder etwas mehr im voraus flach.</p>
<p>[EDIT]</p>
<p>ich kämpf mich grad durch die stl::vector dateien...<br />
aber was ich bis jetz hier entziffere kopieren die da auch wild umher...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/860848</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/860848</guid><dc:creator><![CDATA[ein.brot]]></dc:creator><pubDate>Mon, 29 Aug 2005 20:34:49 GMT</pubDate></item></channel></rss>