<?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[speicher &amp;quot;aggressiv&amp;quot; freigeben]]></title><description><![CDATA[<p>ich hab ne datenstruktur, die aus vielen redundanten zeigern besteht. dadurch sollen paar berechnungen ram statt cpu intensiv werden.</p>
<p>also ungefähr so:</p>
<pre><code class="language-cpp">struct A
{
 float payload;
 vector&lt;B*&gt; b_;
 vector&lt;C*&gt; c_;
}

struct B
{
 float payload;
 vector&lt;A*&gt; a_;
 vector&lt;C*&gt; c_;
}

struct C
{
 vector&lt;A*&gt; a_;
 vector&lt;B*&gt; b_;
 vector&lt;C*&gt; c_;
}
</code></pre>
<p>so eine struktur wird für eine berechnung temporär angelegt und frisst so ca. 1 gig ram weg. nach der berechnung wollt ich das ding wegschmeissen, aber irgendwie wird der speicher nicht frei gegeben.</p>
<p>ist &quot;delete&quot; für sowas geeignet oder muss man den speicher dann anders wieder freigeben?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/141387/speicher-quot-aggressiv-quot-freigeben</link><generator>RSS for Node</generator><lastBuildDate>Mon, 31 Aug 2026 11:05:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/141387.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 21 Mar 2006 14:52:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to speicher &amp;quot;aggressiv&amp;quot; freigeben on Tue, 21 Mar 2006 14:52:33 GMT]]></title><description><![CDATA[<p>ich hab ne datenstruktur, die aus vielen redundanten zeigern besteht. dadurch sollen paar berechnungen ram statt cpu intensiv werden.</p>
<p>also ungefähr so:</p>
<pre><code class="language-cpp">struct A
{
 float payload;
 vector&lt;B*&gt; b_;
 vector&lt;C*&gt; c_;
}

struct B
{
 float payload;
 vector&lt;A*&gt; a_;
 vector&lt;C*&gt; c_;
}

struct C
{
 vector&lt;A*&gt; a_;
 vector&lt;B*&gt; b_;
 vector&lt;C*&gt; c_;
}
</code></pre>
<p>so eine struktur wird für eine berechnung temporär angelegt und frisst so ca. 1 gig ram weg. nach der berechnung wollt ich das ding wegschmeissen, aber irgendwie wird der speicher nicht frei gegeben.</p>
<p>ist &quot;delete&quot; für sowas geeignet oder muss man den speicher dann anders wieder freigeben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1021133</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1021133</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Tue, 21 Mar 2006 14:52:33 GMT</pubDate></item><item><title><![CDATA[Reply to speicher &amp;quot;aggressiv&amp;quot; freigeben on Tue, 21 Mar 2006 15:02:07 GMT]]></title><description><![CDATA[<p>delete ist dafür geeignet, wenn der speicher mit new reserviert wurde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1021136</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1021136</guid><dc:creator><![CDATA[winheis]]></dc:creator><pubDate>Tue, 21 Mar 2006 15:02:07 GMT</pubDate></item><item><title><![CDATA[Reply to speicher &amp;quot;aggressiv&amp;quot; freigeben on Tue, 21 Mar 2006 15:06:18 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>aber nicht vergessen, das du bei den vectoren wegen der Pointer selbst die dahinter stehenden Instanzen mit delete löschen must.<br />
Das ganze kannst du dir übrigens durch die Verwendung von Destruktoren für die structs vereinfachen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1021140</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1021140</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 21 Mar 2006 15:06:18 GMT</pubDate></item><item><title><![CDATA[Reply to speicher &amp;quot;aggressiv&amp;quot; freigeben on Tue, 21 Mar 2006 15:14:56 GMT]]></title><description><![CDATA[<p>da fällt mir noch was ein. einige der container sind sets und so krams, die ich über iterator anspreche. iterator liefern ja konstante zeiger zurück, kann man über die mit delete die instanz zerstören?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1021147</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1021147</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Tue, 21 Mar 2006 15:14:56 GMT</pubDate></item><item><title><![CDATA[Reply to speicher &amp;quot;aggressiv&amp;quot; freigeben on Tue, 21 Mar 2006 16:10:26 GMT]]></title><description><![CDATA[<p>wäre ziemlich dumm wenn man ein &quot;const char* p = new char[13];&quot; nicht wieder löschen könnte...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1021202</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1021202</guid><dc:creator><![CDATA[Kenner des Standards]]></dc:creator><pubDate>Tue, 21 Mar 2006 16:10:26 GMT</pubDate></item><item><title><![CDATA[Reply to speicher &amp;quot;aggressiv&amp;quot; freigeben on Tue, 21 Mar 2006 19:05:04 GMT]]></title><description><![CDATA[<p>Wenn deine Bs und Cs klein sind, kannst du kannst einen Arena Allocator (auch Pool Allocator, Cluster Allocator) dafür verwenden: der alloziert Speicher in großen Blöcken, gibt den in kleinen Schnipsel raus (ohne sich zu den Schnipsel irgendwas zu merken). Wenn du das ganze nicht mehr brauchst, gibst du nur die paar Blöcke frei.</p>
<p>Spart Speicher (typisch 8Byte overhead / Alloc), vermeidet Heap-Fragmentierung.</p>
<p>(Die Allokationen sollten allerdings das &quot;richtige&quot; alignment für die entsprechenden daten haben, sonst wirst du zu langsam)</p>
<p>wenn es nicht allzuviele B's und C's sind, kannst du bei delete bleiben.</p>
<p>Ob das ganze aber wirklich eine Optimierung ist, sei dahingestellt. Speicherzugriffe sind auf modernen Rechnern der Flaschenhals schlechthin. Wenn du den Speicher sequentiell durchforstest, mag es noch gehen, wenn du aber auf dem 1GB wie wild rumhüpfst, ist der Prozessor nur mit Warten beschäftigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1021271</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1021271</guid><dc:creator><![CDATA[peterchen]]></dc:creator><pubDate>Tue, 21 Mar 2006 19:05:04 GMT</pubDate></item></channel></rss>