<?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[Was passiert hier?]]></title><description><![CDATA[<p>Hi, was macht denn die folgende Funktion wobei die Funktion GetMyDouble einen Zeiger auf einen dynamisch erzeugten Double zurückgibt?</p>
<pre><code class="language-cpp">Double MyDouble()
{
	return *static_cast&lt;const Double*&gt;(GetMyDouble());
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/288180/was-passiert-hier</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 03:10:57 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/288180.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 11 Jun 2011 22:40:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Was passiert hier? on Sat, 11 Jun 2011 22:40:02 GMT]]></title><description><![CDATA[<p>Hi, was macht denn die folgende Funktion wobei die Funktion GetMyDouble einen Zeiger auf einen dynamisch erzeugten Double zurückgibt?</p>
<pre><code class="language-cpp">Double MyDouble()
{
	return *static_cast&lt;const Double*&gt;(GetMyDouble());
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2076893</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2076893</guid><dc:creator><![CDATA[StellerFragen]]></dc:creator><pubDate>Sat, 11 Jun 2011 22:40:02 GMT</pubDate></item><item><title><![CDATA[Reply to Was passiert hier? on Sat, 11 Jun 2011 22:49:37 GMT]]></title><description><![CDATA[<p>Sie gibt vermutlich den Wert des Doubles zurück. (Der Rückgabewert von GetMyDouble() wird in einen const Double* gecastet, welcher dann dereferenziert wird.)</p>
<p>Wobei das schon lustig ist.. steht da irgendwo<br />
typedef double Double<br />
<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="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2076897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2076897</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sat, 11 Jun 2011 22:49:37 GMT</pubDate></item><item><title><![CDATA[Reply to Was passiert hier? on Sat, 11 Jun 2011 22:50:24 GMT]]></title><description><![CDATA[<p>Diese Funktion verwendet den Rückgabewert von GetDouble() als einen Zeiger auf einen Double - und liefert den Wert zurück, auf den er verweist. Das klappt aber nur, wenn GetDouble() etwas halbwegs passendes liefert - und provoziert vermutlich ein Spiecherleck, weil niemand den in GetDouble() angeforderten Speicher freigibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2076899</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2076899</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 11 Jun 2011 22:50:24 GMT</pubDate></item><item><title><![CDATA[Reply to Was passiert hier? on Sat, 11 Jun 2011 22:57:39 GMT]]></title><description><![CDATA[<p>Nein, Double ist eine Wrapper-Klasse um double. Dass die Funktion den Wert zurück gibt ist mir auch klar. Aber wie genau geschieht das? Wird eine Kopie des dynamisch erzeugten Objektes angelegt?<br />
Wenn nein, warum wird dann nach</p>
<pre><code class="language-cpp">{
    Double tmpDouble = GetMyDouble();
}
</code></pre>
<p>der dynamisch erzeugte Double nicht zerstört?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2076900</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2076900</guid><dc:creator><![CDATA[StellerFragen]]></dc:creator><pubDate>Sat, 11 Jun 2011 22:57:39 GMT</pubDate></item><item><title><![CDATA[Reply to Was passiert hier? on Sat, 11 Jun 2011 23:07:04 GMT]]></title><description><![CDATA[<p>Vielleicht zeigst du mal etwas mehr im Zusammenhang, was da eigentlich passiert. Das ganze sieht für mich nämlich reichlich instabil aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2076903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2076903</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 11 Jun 2011 23:07:04 GMT</pubDate></item><item><title><![CDATA[Reply to Was passiert hier? on Sat, 11 Jun 2011 23:16:06 GMT]]></title><description><![CDATA[<p>StellerFragen schrieb:</p>
<blockquote>
<p>Nein, Double ist eine Wrapper-Klasse um double. Dass die Funktion den Wert zurück gibt ist mir auch klar. Aber wie genau geschieht das? Wird eine Kopie des dynamisch erzeugten Objektes angelegt?<br />
Wenn nein, warum wird dann nach</p>
<pre><code class="language-cpp">{
    Double tmpDouble = GetMyDouble();
}
</code></pre>
<p>der dynamisch erzeugte Double nicht zerstört?</p>
</blockquote>
<p>Wenn die Funktion GetMyDouble() mittels new oder malloc Speicher anfordert, bleibt dieser auch nach Verlassen der Funktion erhalten (Der Speicher wird nämlich auf dem Heap reserviert, nicht auf dem Stack). Den Speicherbereich muss man hinterher &quot;manuell&quot; mit delete oder free freigegeben.</p>
<p>Edit: Zum Freigeben braucht man den Zeiger auf den Speicherbereich, im Moment sieht mir das so aus, als ob der verloren geht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2076904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2076904</guid><dc:creator><![CDATA[Jochen S.]]></dc:creator><pubDate>Sat, 11 Jun 2011 23:16:06 GMT</pubDate></item><item><title><![CDATA[Reply to Was passiert hier? on Sat, 11 Jun 2011 23:32:38 GMT]]></title><description><![CDATA[<p>Die Funktion ist Teil einer Klasse die wiederum einen Vector von dynmamischen Objecten hat, die dann im Destructor gelöscht werden. Von daher sollte das freigeben sichergestellt sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2076909</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2076909</guid><dc:creator><![CDATA[StellerFragen]]></dc:creator><pubDate>Sat, 11 Jun 2011 23:32:38 GMT</pubDate></item><item><title><![CDATA[Reply to Was passiert hier? on Sat, 11 Jun 2011 23:46:20 GMT]]></title><description><![CDATA[<p>Und was genau gibt diese Funktion eigentlich zurück? Nach dem ersten Beitrag zu urteilen liefert sie einen Zeiger, nach dem zweiten Beitrag ein Objekt bzw. eine Referenz.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2076913</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2076913</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 11 Jun 2011 23:46:20 GMT</pubDate></item><item><title><![CDATA[Reply to Was passiert hier? on Sun, 12 Jun 2011 00:13:46 GMT]]></title><description><![CDATA[<p>Oh, sorry ist schon spät. In meinem zweiten Post sollte MyDouble() stehen. Die Funktion GetMyDouble() liefert einen Zeiger aus dem Vector zurück.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2076917</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2076917</guid><dc:creator><![CDATA[StellerFragen]]></dc:creator><pubDate>Sun, 12 Jun 2011 00:13:46 GMT</pubDate></item><item><title><![CDATA[Reply to Was passiert hier? on Sun, 12 Jun 2011 07:45:14 GMT]]></title><description><![CDATA[<p>Und wozu benötigst du dann den Cast? Wenn du dir sicher bist, was GetMyDouble() liefern sollte, sollte auch dessen Rückgabetyp stimmen. Andernfalls könnte es passieren, daß du nur Müll erhältst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2076945</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2076945</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sun, 12 Jun 2011 07:45:14 GMT</pubDate></item></channel></rss>