<?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[pointer]]></title><description><![CDATA[<p>Hallo zusammen</p>
<p>vielleicht ist das jetzt eine bloede Frage, aber ich habe ein Problem was allokierung und deallokierung von Speicher bei Pointern betrifft. Wenn ich eine Methode dieser Art habe:</p>
<pre><code class="language-cpp">void MyObject::loadSomething(string szName, Object* obj)
{
	if(obj == NULL)
	{
		obj = new Object();
	}

         ....................
}
</code></pre>
<p>Der Speicher wird jetzt in der Methode allokiert. Wie deallokiere ich denn sowas? Oder ist es besser Speicher immer ausserhalb einer Methode zu allokieren damit ich ihn nachher auch wieder sauber freigeben kann?</p>
<p>Gruessle</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/139889/pointer</link><generator>RSS for Node</generator><lastBuildDate>Sun, 30 Aug 2026 19:17:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/139889.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 10 Mar 2006 08:52:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to pointer on Fri, 10 Mar 2006 08:52:53 GMT]]></title><description><![CDATA[<p>Hallo zusammen</p>
<p>vielleicht ist das jetzt eine bloede Frage, aber ich habe ein Problem was allokierung und deallokierung von Speicher bei Pointern betrifft. Wenn ich eine Methode dieser Art habe:</p>
<pre><code class="language-cpp">void MyObject::loadSomething(string szName, Object* obj)
{
	if(obj == NULL)
	{
		obj = new Object();
	}

         ....................
}
</code></pre>
<p>Der Speicher wird jetzt in der Methode allokiert. Wie deallokiere ich denn sowas? Oder ist es besser Speicher immer ausserhalb einer Methode zu allokieren damit ich ihn nachher auch wieder sauber freigeben kann?</p>
<p>Gruessle</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1013039</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1013039</guid><dc:creator><![CDATA[samo]]></dc:creator><pubDate>Fri, 10 Mar 2006 08:52:53 GMT</pubDate></item><item><title><![CDATA[Reply to pointer on Fri, 10 Mar 2006 09:06:34 GMT]]></title><description><![CDATA[<p>Du solltest als erstes den Parameter per Referenz übergeben (Object***&amp;** obj), dann wird die angelegte Adresse auch nach außen zurückgeliefert. Mit dieser Änderung kann das Hauptprogramm dann auch den passenden delete-Aufruf absetzen, um den Speicher wieder freizugeben.</p>
<p>(oder, wenn du das Objekt &quot;außen&quot; nicht benötigst, definier es lokal in der Funktion und gib es selber vor dem return frei)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1013048</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1013048</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 10 Mar 2006 09:06:34 GMT</pubDate></item><item><title><![CDATA[Reply to pointer on Fri, 10 Mar 2006 09:19:54 GMT]]></title><description><![CDATA[<p>Hmm, also wenn ich das mit *&amp; versuche dann bekomme ich folgende Fehlermeldungen:</p>
<pre><code class="language-cpp">default argument: cannot convert from int to *&amp;
</code></pre>
<p>Ich uebergebe meiner Methode die Pointer mit Defaultwert NULL. Aber wenn ich <em>&amp; schreibe mag er das nicht mehr. Also Object</em>&amp; = NULL.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1013060</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1013060</guid><dc:creator><![CDATA[samo]]></dc:creator><pubDate>Fri, 10 Mar 2006 09:19:54 GMT</pubDate></item><item><title><![CDATA[Reply to pointer on Fri, 10 Mar 2006 09:25:56 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>Irgendwie klar ne? Eine Referenz muss <strong>immer</strong> etwas referenzieren. Und NULL ist ungültig.<br />
Du musst also schon einen richtigen Zeiger übergeben.</p>
<p>NULL is sowiso doof, denn:</p>
<pre><code class="language-cpp">NULL = new Object(); // ???
</code></pre>
<p>was soll der Compiler da von halten?</p>
<p>grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1013062</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1013062</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Fri, 10 Mar 2006 09:25:56 GMT</pubDate></item><item><title><![CDATA[Reply to pointer on Fri, 10 Mar 2006 09:30:16 GMT]]></title><description><![CDATA[<p>Eine andere Idee wäre es, das angelegte Objekt per return zurückzugeben:</p>
<pre><code class="language-cpp">Objct* load(const string&amp; name)
{
  Object* ret=new Object;
  ...
  return ret;
}

...
Object* data=load(...);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1013069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1013069</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 10 Mar 2006 09:30:16 GMT</pubDate></item><item><title><![CDATA[Reply to pointer on Fri, 10 Mar 2006 12:13:14 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>David_pb schrieb:</p>
<blockquote>
<p>Eine Referenz muss <strong>immer</strong> etwas referenzieren.</p>
</blockquote>
<p>muss sie gar nicht. Wir gehen nur davon aus, dass sie etwas referenziert.</p>
<p>MfG</p>
<p>GPC</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1013229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1013229</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Fri, 10 Mar 2006 12:13:14 GMT</pubDate></item><item><title><![CDATA[Reply to pointer on Fri, 10 Mar 2006 12:24:28 GMT]]></title><description><![CDATA[<p>Hi!</p>
<pre><code class="language-cpp">int main()
{
  int &amp;r;
  return 0;
}
</code></pre>
<p>Compilier das mal! Klappts?<br />
Ohne Initialisierung wird das nich klappen...</p>
<p>Genausowenig wie Referenzen mit temporären Variablen initialisiert werden können.</p>
<p>grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1013237</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1013237</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Fri, 10 Mar 2006 12:24:28 GMT</pubDate></item><item><title><![CDATA[Reply to pointer on Fri, 10 Mar 2006 12:30:23 GMT]]></title><description><![CDATA[<p>So direkt kriegst du das auch nicht hin - aber was hältst du von sowas:</p>
<pre><code class="language-cpp">int main()
{
  int* pi;
  int&amp; ri=*pi;
  return 0;
}
</code></pre>
<p>(nach meinem Kenntnisstand dürfte das sogar compilieren)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1013244</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1013244</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 10 Mar 2006 12:30:23 GMT</pubDate></item><item><title><![CDATA[Reply to pointer on Fri, 10 Mar 2006 12:31:46 GMT]]></title><description><![CDATA[<p>Mein Problem war, dass ich wissen wollte, wie ich einen Pointer, der in einer Methode allokiert wird, ausserhalb der Methode loeschen kann :-). Mit *&amp; funktionierts, nur kann ich dann meiner Methode keinen Defaultwert fuer dieses Object mehr uebergeben. Den Defaultwert hatte ich, damit ich flexibel gestalten kann, sprich das Object auch nicht uebergeben muss wenn es der User nicht will. Soweit ich das aus den Beitraegen jetzt herauslesen konnte, kann ich das Problem loesen indem ich das Object zurueckgeben lasse oder eben mit *&amp; und dafuer auf den Defaultwert verzichten muss.</p>
<p>Vielen Dank fuer die Vorschlaege und die Hilfen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1013245</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1013245</guid><dc:creator><![CDATA[samo]]></dc:creator><pubDate>Fri, 10 Mar 2006 12:31:46 GMT</pubDate></item><item><title><![CDATA[Reply to pointer on Fri, 10 Mar 2006 13:35:18 GMT]]></title><description><![CDATA[<p>Sowas solltest du einfach überhaupt nicht tun oder du musst eine &quot;Rückgabefunktion&quot; schreiben, die den Speicher wieder freigibt. Also zu loadSomething gibts dann auch ein freeSomething. Wer speicher allokiert sollte ihn gefälligst auch wieder freigeben.</p>
<p>Bye, TGGC (<a href="http://tggc.tg.funpic.de/index.php?cat=1&amp;page=8" rel="nofollow">Fakten</a>)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1013292</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1013292</guid><dc:creator><![CDATA[TGGC]]></dc:creator><pubDate>Fri, 10 Mar 2006 13:35:18 GMT</pubDate></item></channel></rss>