<?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 den Heap]]></title><description><![CDATA[<p>Hi,</p>
<p>ich frage mich, wie man es bewerkstelligen kann eine Referenz auf ein Objekt auf dem Heap zu bekommen?</p>
<pre><code class="language-cpp">MyObj &amp;obj1 = MyObj();
MyObj *obj2 = new MyObj();
//MyObj &amp;obj3 = new MyObj();
</code></pre>
<p>Während es mit obj1 gut funktioniert, muß ich um ein Objekt obj2 im von new geholten Speicher zu adressieren einen Pointer benutzen. Wie bekomme ich eine Referenz auf ein Objekt obj3 im Heap hin?</p>
<p>Vielleicht denke ich auch gerade völlig verquer (bin krank <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> ), dann bitte ich das zu entschuldigen <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="😕"
    /> danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/170064/referenz-auf-den-heap</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 00:05:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/170064.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 11 Jan 2007 12:54:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Referenz auf den Heap on Thu, 11 Jan 2007 12:54:03 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich frage mich, wie man es bewerkstelligen kann eine Referenz auf ein Objekt auf dem Heap zu bekommen?</p>
<pre><code class="language-cpp">MyObj &amp;obj1 = MyObj();
MyObj *obj2 = new MyObj();
//MyObj &amp;obj3 = new MyObj();
</code></pre>
<p>Während es mit obj1 gut funktioniert, muß ich um ein Objekt obj2 im von new geholten Speicher zu adressieren einen Pointer benutzen. Wie bekomme ich eine Referenz auf ein Objekt obj3 im Heap hin?</p>
<p>Vielleicht denke ich auch gerade völlig verquer (bin krank <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> ), dann bitte ich das zu entschuldigen <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="😕"
    /> danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1207879</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1207879</guid><dc:creator><![CDATA[__et_]]></dc:creator><pubDate>Thu, 11 Jan 2007 12:54:03 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz auf den Heap on Thu, 11 Jan 2007 13:07:31 GMT]]></title><description><![CDATA[<p>new liefert dir einen Zeiger - wenn du eine Referenz willst, mußt du dazu das Objekt hinter dem Zeiger nehmen:</p>
<pre><code class="language-cpp">MyObj&amp; ref = *(new MyObj());
</code></pre>
<p>(btw - die Initialisierung von obj1 kommt zwar möglicherweise durch den Compiler, ist aber sicher keine gute Idee - das Objekt, das du Referenzierst, wird nämlich sofort wieder zerlegt, so daß du danach auf Daten zeigst, die dir nicht gehören (und die spätestens nach einigen weiteren Funktionsaufrufen keine Ähnlichkeit mit einem 'MyObj'-Objekt haben))</p>
<p>Aber normalerweise solltest du lieber Zeiger verwenden, um auf den Heap zuzugreifen (OK, das ist meine persönliche Meinung, aber das sieht zumindest übersichlicher aus).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1207897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1207897</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 11 Jan 2007 13:07:31 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz auf den Heap on Thu, 11 Jan 2007 13:10:42 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ergänzend zu CStoll:<br />
Aufräumen nicht vergessen !!!</p>
<pre><code class="language-cpp">MyObj* obj3Ptr = new MyObj();
MyObj &amp;obj3 = *obj3Ptr; 

// Mach, was Du willst ...

delete obj3Ptr;
</code></pre>
<p>(oder noch besser mit scoped-Pointern)</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1207900</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1207900</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 11 Jan 2007 13:10:42 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz auf den Heap on Fri, 12 Jan 2007 11:20:10 GMT]]></title><description><![CDATA[<p>Vielen Dank.</p>
<p>Wieso würdest Du eher Pointer verwenden? Ich dachte Referenzen sollen sicherer sein, da sie eben immer auf das Objekt zeigen und nicht durch Progammierfehler manipuliert werden können. Mir wurde vor kurzem gesagt, Pointer am Besten nur da verwenden, wo man sie wirklich braucht - sonst lieber Referenzen. Oder ist das nicht so eindeutig?</p>
<p>Simon2 schrieb:</p>
<blockquote>
<p>oder noch besser mit scoped-Pointern</p>
</blockquote>
<p>Wo liegt denn darin der Vorteil?</p>
<p>danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1208608</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1208608</guid><dc:creator><![CDATA[__et_]]></dc:creator><pubDate>Fri, 12 Jan 2007 11:20:10 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz auf den Heap on Fri, 12 Jan 2007 11:38:45 GMT]]></title><description><![CDATA[<p>Im Zusammenhang mit dem Heap sind Referenzen auch nicht besonders sicher (klar, du kannst sie nicht umbiegen - aber wenn du sie delete'st, hast du genauso undefinertes Verhalten).</p>
<p>scoped-Pointer sind da günstiger, vor allem weil du dich nicht mehr um die Aufräumarbeiten kümmern mußt (wenn du mehr dazu wissen willst, schau mal in unser Magazin).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1208623</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1208623</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 12 Jan 2007 11:38:45 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz auf den Heap on Fri, 12 Jan 2007 11:46:30 GMT]]></title><description><![CDATA[<p>_<em>et</em> schrieb:</p>
<blockquote>
<p>Vielen Dank.</p>
<p>Wieso würdest Du eher Pointer verwenden? Ich dachte Referenzen sollen sicherer sein, da sie eben immer auf das Objekt zeigen und nicht durch Progammierfehler manipuliert werden können. Mir wurde vor kurzem gesagt, Pointer am Besten nur da verwenden, wo man sie wirklich braucht - sonst lieber Referenzen. Oder ist das nicht so eindeutig?</p>
</blockquote>
<p>C++ Referenzobjekte &quot;zeigen&quot; aber nirgeds wo drauf. Zeigen tun nur Zeiger (Pointer)... wie der Name schon sagt. Merke dir eines (orig. von Stroustrup): &quot;Referenzen sind nur ein anderer Name für ein Objekt.&quot;</p>
<p>Lass dir das mal durch den Kopf gehen, dann wirst du den Unterschied erkennen. <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/1208628</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1208628</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Fri, 12 Jan 2007 11:46:30 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz auf den Heap on Fri, 12 Jan 2007 16:03:17 GMT]]></title><description><![CDATA[<p>_<em>et</em> schrieb:</p>
<blockquote>
<p>...</p>
<p>Simon2 schrieb:</p>
<blockquote>
<p>oder noch besser mit scoped-Pointern</p>
</blockquote>
<p>Wo liegt denn darin der Vorteil?</p>
<p>danke</p>
</blockquote>
<p>Wie CStoll schon sagt: Mit scoped Pointern verringerst Du dramatisch die Chance von Speicherlecks (sprich: Du kannst nicht mehr vergessen, sie zu deletenm weil das der scoped-Pointer für Dich macht).</p>
<p>Trotzdem bleibt die Gefahr von verwaisten Referenzen...</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1208842</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1208842</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Fri, 12 Jan 2007 16:03:17 GMT</pubDate></item></channel></rss>