<?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[Referenz auf std::vector braucht ständig neuen Speicher?]]></title><description><![CDATA[<p>Hallo!</p>
<p>Es geht um einen typisierten Vektor. Dieser ist als Feld eines Objektes gespeichert. Eine Getter-Methode soll eine Referenz darauf zurückliefern.<br />
Nun ist es aber so, dass folgender Code bei mri (MS VC++) pro Sekunde (pro Sekunde wird die Methode 20mal aufgerufen) eine Vergrößerung des virtuellen Speichers von ca. 32kb zur Folge hat:</p>
<pre><code class="language-cpp">//Code in der wiederholt aufgerufenen Methode
BallVector balls = controller-&gt;getBalls();

//Deklarartion und Definition vom Controller
typedef vector&lt;Ball&gt; BallVector;
typedef BallVector::iterator BallIterator;

class Controller
{
//....
private:
  BallVector balls;
public:
  BallVector&amp; getBalls();
};

inline BallVector&amp; Controller::getBalls()
{
  return balls;
}
</code></pre>
<p>Es ist definitiv der Aufruf der Methode, entferne ich sie aus de Programm, gibt es keinen Speicherverbrauchszuwachs.</p>
<p>Nach meinem Verständnis sollte der Compiler diesen Aufruf doch genauso umsetzen, als wäre ein direkter Zugriff auf das Feld erfolgt und es sollte schon gar kein zusätzlöicher Speicher angefordert und nicht mehr freigebeben werden.</p>
<p>Hat einer ne Idee, wo mein Fehler liegt?</p>
<p>Danke im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/128219/referenz-auf-std-vector-braucht-ständig-neuen-speicher</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 13:47:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/128219.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 01 Dec 2005 15:52:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Referenz auf std::vector braucht ständig neuen Speicher? on Thu, 01 Dec 2005 15:52:05 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Es geht um einen typisierten Vektor. Dieser ist als Feld eines Objektes gespeichert. Eine Getter-Methode soll eine Referenz darauf zurückliefern.<br />
Nun ist es aber so, dass folgender Code bei mri (MS VC++) pro Sekunde (pro Sekunde wird die Methode 20mal aufgerufen) eine Vergrößerung des virtuellen Speichers von ca. 32kb zur Folge hat:</p>
<pre><code class="language-cpp">//Code in der wiederholt aufgerufenen Methode
BallVector balls = controller-&gt;getBalls();

//Deklarartion und Definition vom Controller
typedef vector&lt;Ball&gt; BallVector;
typedef BallVector::iterator BallIterator;

class Controller
{
//....
private:
  BallVector balls;
public:
  BallVector&amp; getBalls();
};

inline BallVector&amp; Controller::getBalls()
{
  return balls;
}
</code></pre>
<p>Es ist definitiv der Aufruf der Methode, entferne ich sie aus de Programm, gibt es keinen Speicherverbrauchszuwachs.</p>
<p>Nach meinem Verständnis sollte der Compiler diesen Aufruf doch genauso umsetzen, als wäre ein direkter Zugriff auf das Feld erfolgt und es sollte schon gar kein zusätzlöicher Speicher angefordert und nicht mehr freigebeben werden.</p>
<p>Hat einer ne Idee, wo mein Fehler liegt?</p>
<p>Danke im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/931433</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/931433</guid><dc:creator><![CDATA[Chewie83]]></dc:creator><pubDate>Thu, 01 Dec 2005 15:52:05 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz auf std::vector braucht ständig neuen Speicher? on Thu, 01 Dec 2005 16:05:30 GMT]]></title><description><![CDATA[<p>Hier wird der Vektor garantiert nicht kopiert. Villeicht braucht ja der Algorithmus der die Referenz benötigt zusätzlichen Speicher.<br />
Zeig am Besten mal was du mit der Referenz anfängst.</p>
<p>Achja, du musst es natürlich so schreiben, sonst wird kopiert --&gt;</p>
<pre><code class="language-cpp">BallVector&amp; ref = ControllerInstance.getBalls();
</code></pre>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/931444</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/931444</guid><dc:creator><![CDATA[FireFlow]]></dc:creator><pubDate>Thu, 01 Dec 2005 16:05:30 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz auf std::vector braucht ständig neuen Speicher? on Thu, 01 Dec 2005 16:07:48 GMT]]></title><description><![CDATA[<p>FireFlow schrieb:</p>
<blockquote>
<p>Achja, du musst es natürlich so schreiben, sonst wird kopiert --&gt;</p>
<pre><code class="language-cpp">BallVector&amp; ref = ControllerInstance.getBalls();
</code></pre>
<p>Gruß</p>
</blockquote>
<p>Verdammt!</p>
<p>Dankeschön <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/931447</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/931447</guid><dc:creator><![CDATA[Chewie83]]></dc:creator><pubDate>Thu, 01 Dec 2005 16:07:48 GMT</pubDate></item></channel></rss>