<?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[Rückgabewert mit new angelegt, wo loeschen?]]></title><description><![CDATA[<p>Ich möchte etwas aus einem Stringtable lesen und dies zurückgeben.<br />
Hab mir das folgendermaßen vorgestellt:</p>
<pre><code class="language-cpp">char* loadFromTable(unsigned int ID)
{
	HRSCR scrHandle;
	DWORD sizeByte;
	srcHandle = FindResource(GetModuleHandle(NULL), MAKEINTRESOURCE(ID), RT_STRING );
    if( scrHandle != NULL )
    {
        sizeByte = SizeofResource( NULL, rsrc );
        if( sizeByte &gt; 0 )
        {
			sizeChar = sizeByte/sizeof(char) +1;

			strTextBuffer = new char[sizeChar];

			LoadString(GetModuleHandle(NULL) ,ID strTextBuffer,sizeChar);

			return strTextBuffer;
        }
    }

return -1;     
}
</code></pre>
<p>die Variable strTextBuffer liegt doch nun im Heap, oder?<br />
Wird bei erneuten Aufruf der Funktion die Variable überschrieben, oder neuer Speicher reserviert?<br />
Wenn neuer speicher reserviert wird, wie und wo delete ich den denn dann?<br />
gehe ich hier vernünftig vor oder macht man sowas in der Regel anders?</p>
<p>muli</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/184182/rückgabewert-mit-new-angelegt-wo-loeschen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 15:48:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/184182.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 13 Jun 2007 01:15:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Rückgabewert mit new angelegt, wo loeschen? on Wed, 13 Jun 2007 01:15:51 GMT]]></title><description><![CDATA[<p>Ich möchte etwas aus einem Stringtable lesen und dies zurückgeben.<br />
Hab mir das folgendermaßen vorgestellt:</p>
<pre><code class="language-cpp">char* loadFromTable(unsigned int ID)
{
	HRSCR scrHandle;
	DWORD sizeByte;
	srcHandle = FindResource(GetModuleHandle(NULL), MAKEINTRESOURCE(ID), RT_STRING );
    if( scrHandle != NULL )
    {
        sizeByte = SizeofResource( NULL, rsrc );
        if( sizeByte &gt; 0 )
        {
			sizeChar = sizeByte/sizeof(char) +1;

			strTextBuffer = new char[sizeChar];

			LoadString(GetModuleHandle(NULL) ,ID strTextBuffer,sizeChar);

			return strTextBuffer;
        }
    }

return -1;     
}
</code></pre>
<p>die Variable strTextBuffer liegt doch nun im Heap, oder?<br />
Wird bei erneuten Aufruf der Funktion die Variable überschrieben, oder neuer Speicher reserviert?<br />
Wenn neuer speicher reserviert wird, wie und wo delete ich den denn dann?<br />
gehe ich hier vernünftig vor oder macht man sowas in der Regel anders?</p>
<p>muli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1304514</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1304514</guid><dc:creator><![CDATA[muli]]></dc:creator><pubDate>Wed, 13 Jun 2007 01:15:51 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabewert mit new angelegt, wo loeschen? on Wed, 13 Jun 2007 04:17:49 GMT]]></title><description><![CDATA[<p>jepp das ist ein Problem, bzw. Designfrage... wie es bspw. in Jave mit dem Garbage Collector gelöst wurde..</p>
<p>Du müsstest sog. Smart Pointer Benutzen... dies Pointer sind intelligent, und löschen ihre Instanz sobal sie nicht mehr genutzt werden... ansonsten ist es schwer zu sagen wo du die Instanz löschen musst...es könnte ja sein das du diese Funktion nicht immer aufruftst,</p>
<p>1. Entwerder nutzt Smart-Pointer</p>
<p>2. Überdenke deine Programm Desing</p>
<p>3. Oder:</p>
<pre><code class="language-cpp">//Zeiger deklarieren, initalisiren
char *p=NULL;

//Funktion mit zeiger referenz
void Funktion(char *&amp;p){
  p= new char.....
}

// löschen wenn zeiger auf eine Instanz zeigt!
if(p)
  delete p;
</code></pre>
<p>P.S: rufst du mehreremale die Funktion auf, wierd immer wieder neuer Speicherreserveire, und die Adresse in p gespeichert, wobei die Addresse der Alten speicehrreservierung gelöscht wird.... nicht gut!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1304521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1304521</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Wed, 13 Jun 2007 04:17:49 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabewert mit new angelegt, wo loeschen? on Wed, 13 Jun 2007 05:44:22 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<pre><code class="language-cpp">// löschen wenn zeiger auf eine Instanz zeigt!
if(p)
  delete p;
</code></pre>
</blockquote>
<p>Das 'if' ist hier überflüssig.</p>
<p>Wieso eigentlich ne Zeiger-Referenzübergabe? Wenn man schon s 'nen Zeiger nimmt, kann man ihn auch per 'return' zurückgeben. Besser wird's dadurch natürlich auch nicht …</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1304545</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1304545</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Wed, 13 Jun 2007 05:44:22 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabewert mit new angelegt, wo loeschen? on Wed, 13 Jun 2007 06:22:50 GMT]]></title><description><![CDATA[<p>ja gut ist eigenlich egal ,aber wenn:</p>
<pre><code class="language-cpp">void Funktion(char *&amp;p){

if(p)
 delete p;

p= new char....

}
</code></pre>
<p>dann ist das Problem weg, das die refernez überschrieben wird, wenn die funktione mehrermalle aufgerufen wird!!</p>
<p>P.S. if überflüssig? wird das überprüft beim delete obs NULL ist??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1304555</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1304555</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Wed, 13 Jun 2007 06:22:50 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabewert mit new angelegt, wo loeschen? on Wed, 13 Jun 2007 06:26:54 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>P.S. if überflüssig? wird das überprüft beim delete obs NULL ist??</p>
</blockquote>
<p>Ja.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1304556</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1304556</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Wed, 13 Jun 2007 06:26:54 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabewert mit new angelegt, wo loeschen? on Wed, 13 Jun 2007 06:33:04 GMT]]></title><description><![CDATA[<p>ist das schon immer so? vor jahren musste man das noch glaub ich...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1304557</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1304557</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Wed, 13 Jun 2007 06:33:04 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabewert mit new angelegt, wo loeschen? on Wed, 13 Jun 2007 07:38:44 GMT]]></title><description><![CDATA[<p>Seit der Standard garantiert das operator delete() selbst prüft ob der übergebene Zeiger 0 ist und new/[] ohnehin keinen nullzeiger zurückliefert ist das prüfen auf einen null-zeiger überflüssig. Mag sein, dass das früher anders geregelt war.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1304593</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1304593</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Wed, 13 Jun 2007 07:38:44 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabewert mit new angelegt, wo loeschen? on Wed, 13 Jun 2007 07:46:24 GMT]]></title><description><![CDATA[<p>Bevor es nicht standardisiert war, war es eben verschieden. Aber wen verwundert das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1304599</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1304599</guid><dc:creator><![CDATA[Helium]]></dc:creator><pubDate>Wed, 13 Jun 2007 07:46:24 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabewert mit new angelegt, wo loeschen? on Wed, 13 Jun 2007 07:50:12 GMT]]></title><description><![CDATA[<p>muli schrieb:</p>
<blockquote>
<p>...<br />
die Variable strTextBuffer liegt doch nun im Heap, oder?<br />
...</p>
</blockquote>
<p>Jepp</p>
<p>muli schrieb:</p>
<blockquote>
<p>...<br />
Wird bei erneuten Aufruf der Funktion die Variable überschrieben, oder neuer Speicher reserviert?<br />
...</p>
</blockquote>
<p>Beides. strTextBuffer bekommt eine neue Adresse und zeigt auf neu reservierten Speicher der Größe sizeChar.</p>
<p>Wenn vorher Speicher reserviert und nicht freigegeben wurde und wenn die Adresse nicht woanders zwischengespeichert wurde, dann ist dieser Speicher im Heap nicht mehr erreichbar.</p>
<p>muli schrieb:</p>
<blockquote>
<p>...<br />
Wenn neuer speicher reserviert wird, wie und wo delete ich den denn dann?<br />
gehe ich hier vernünftig vor oder macht man sowas in der Regel anders?<br />
...<br />
muli</p>
</blockquote>
<p>Im prinzip ist es egal, wo du den Speicher frei gibst.<br />
Arrays werden mit delete [] freigegeben. Ansonsten gibst du nur ein einziges Element frei, der Rest ist dann nicht mehr zugänglich ( verwitwetes Objekt )</p>
<p>p.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1304601</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1304601</guid><dc:creator><![CDATA[proggingmania]]></dc:creator><pubDate>Wed, 13 Jun 2007 07:50:12 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabewert mit new angelegt, wo loeschen? on Wed, 13 Jun 2007 08:11:45 GMT]]></title><description><![CDATA[<p>ich seh in der funktion nirgendwo eine deklaration von strTextBuffer. also ich geh ich mal davon aus, dass diese global geschehen ist.</p>
<p>dadurch lässt sich das &quot;problem&quot; womöglich sehr leicht lösen:</p>
<pre><code>delete strTextBuffer;
strTextBuffer = new char[sizeChar];
</code></pre>
<p>die funktion selbst kümmert sich darum, dass der speicher freigegeben wird, bevor dem pointer neuer speicher zugewiesen wird.</p>
<p>das ist natürlich nur dann eine lösung, wenn zwischenzeitlich nicht an irgendeiner anderen stelle ein anderer pointer auf genau diese adresse gebogen wurde. denn dann würde dieser logischerweise irgendwann ins leere greifen und dein programm fliegt dir um die ohren.</p>
<p>sollte das der fall sein und das design es nicht zulassen, das ganze anders zu lösen, dann ist nen smart_ptr wahrscheinlich die einfachste lösung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1304615</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1304615</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Wed, 13 Jun 2007 08:11:45 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabewert mit new angelegt, wo loeschen? on Wed, 13 Jun 2007 08:31:11 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">delete[] strTextBuffer;
</code></pre>
<p>Als Smartpointer wäre hier wohl boost::shared_array&lt;char&gt; das richtige. auto_ptr geht ja nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1304630</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1304630</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 13 Jun 2007 08:31:11 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabewert mit new angelegt, wo loeschen? on Wed, 13 Jun 2007 08:35:53 GMT]]></title><description><![CDATA[<p>&lt; Error Detected &gt;</p>
<pre><code class="language-cpp">void Funktion(char *&amp;p)
</code></pre>
<p>&lt; Correction &gt;</p>
<pre><code class="language-cpp">void Funktion(char *p)
</code></pre>
<p>&lt; Error Detected &gt;</p>
<pre><code class="language-cpp">delete strTextBuffer
</code></pre>
<p>&lt; Correction &gt;</p>
<pre><code class="language-cpp">delete [] strTextBuffer
</code></pre>
<p>&lt; Rules &gt;</p>
<pre><code class="language-cpp">new        -&gt; delete
new []     -&gt; delete []
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1304635</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1304635</guid><dc:creator><![CDATA[Code Corrector [active]]]></dc:creator><pubDate>Wed, 13 Jun 2007 08:35:53 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabewert mit new angelegt, wo loeschen? on Wed, 13 Jun 2007 08:41:37 GMT]]></title><description><![CDATA[<p>&lt; Memoryleak detected &gt;</p>
<p>Code Corrector [active] schrieb:</p>
<blockquote>
<p>&lt; Error Detected &gt;</p>
<pre><code class="language-cpp">void Funktion(char *&amp;p)
</code></pre>
<p>&lt; Correction &gt;</p>
<pre><code class="language-cpp">void Funktion(char *p)
</code></pre>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1304639</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1304639</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 13 Jun 2007 08:41:37 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabewert mit new angelegt, wo loeschen? on Wed, 13 Jun 2007 11:52:45 GMT]]></title><description><![CDATA[<p>Da kann man mal wieder sehen, wie objektorientiertes Programmieren mit steigender Komplexität vermeintlich das Denken ersetzt.<br />
Wir schreiben einfach <strong>delete</strong> und Peng alles ist gut.<br />
Oder hach, nehmen wir doch gleich <strong>Smartpointer</strong>, dann brauchen wir gar nicht mehr zu denken.</p>
<p>Muahuahua.</p>
<p>Where is my head today ?</p>
<p>MfG<br />
I forgot my name</p>
<p>Oh, God, make my sourcecode, amen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1304762</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1304762</guid><dc:creator><![CDATA[Brainless Wanderers]]></dc:creator><pubDate>Wed, 13 Jun 2007 11:52:45 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabewert mit new angelegt, wo loeschen? on Wed, 13 Jun 2007 11:57:32 GMT]]></title><description><![CDATA[<p>-&gt; &quot;Wir schreiben einfach <strong>delete</strong> und Peng alles ist gut. &quot;<br />
oder wir nehmem Java...</p>
<p>Aber ich will was zum denken... alles selber in der Hand haben</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1304765</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1304765</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Wed, 13 Jun 2007 11:57:32 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabewert mit new angelegt, wo loeschen? on Wed, 13 Jun 2007 12:28:04 GMT]]></title><description><![CDATA[<p>Brainless Wanderers schrieb:</p>
<blockquote>
<p>Da kann man mal wieder sehen, wie objektorientiertes Programmieren mit steigender Komplexität vermeintlich das Denken ersetzt.<br />
Wir schreiben einfach <strong>delete</strong> und Peng alles ist gut....</p>
</blockquote>
<p>Ha ! Da zeigt sich jahrelange Erfahrung mit großen Projekten !! <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>
<p>&quot;Wir&quot;: Schreibe einmal new/malloc und x-mal &quot;delete/free&quot; (und bei jeder Änderung wieder ein paar mehr)<br />
OO: Schreibe EINMAL &quot;smartpointer&quot; - fertig für alle Zeit!</p>
<p>Kann jeder selbst wählen, was komfortabler, sicherer, schöner, kürzer, übersichtlicher, .... findet. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1304791</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1304791</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 13 Jun 2007 12:28:04 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabewert mit new angelegt, wo loeschen? on Wed, 13 Jun 2007 12:31:56 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>OO: Schreibe EINMAL &quot;smartpointer&quot; - fertig für alle Zeit!</p>
</blockquote>
<p>Nein: Nicht OO, sondern RAII. Der Unterschied: das Laufzeitoverhead. <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>
<p>(OO impliziert für mich Laufzeitpolymorphie.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1304797</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1304797</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Wed, 13 Jun 2007 12:31:56 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabewert mit new angelegt, wo loeschen? on Wed, 13 Jun 2007 13:26:46 GMT]]></title><description><![CDATA[<p>Konrad Rudolph schrieb:</p>
<blockquote>
<p>Simon2 schrieb:</p>
<blockquote>
<p>OO: Schreibe EINMAL &quot;smartpointer&quot; - fertig für alle Zeit!</p>
</blockquote>
<p>Nein: Nicht OO, sondern RAII. Der Unterschied: das Laufzeitoverhead. <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>
<p>(OO impliziert für mich Laufzeitpolymorphie.)</p>
</blockquote>
<p>Nur zur Erinnerung: ICH war nicht derjenigem der die Verwendung von smartpointern auf &quot;OO&quot; verkürzte. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1304853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1304853</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 13 Jun 2007 13:26:46 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabewert mit new angelegt, wo loeschen? on Wed, 13 Jun 2007 13:37:37 GMT]]></title><description><![CDATA[<p>We would have to point out:<br />
Smart Pointers are smashing, they kick ass. <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="🙂"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1304864</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1304864</guid><dc:creator><![CDATA[The Smart (out) Pointer]]></dc:creator><pubDate>Wed, 13 Jun 2007 13:37:37 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabewert mit new angelegt, wo loeschen? on Wed, 13 Jun 2007 13:59:13 GMT]]></title><description><![CDATA[<p>Konrad Rudolph schrieb:</p>
<blockquote>
<p>Wieso eigentlich ne Zeiger-Referenzübergabe? Wenn man schon s 'nen Zeiger nimmt, kann man ihn auch per 'return' zurückgeben. Besser wird's dadurch natürlich auch nicht …</p>
</blockquote>
<p>soll das heißen wenn man pointer returnt das das schlechter stil ist? ich finde es eig. nen gutes hilfsmittel um platz auf dem heap zusparen. was macht es für nen sinn nen riesiges objekt zu returnen? mann kann auch einfach nen pointer darauf returnen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1304889</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1304889</guid><dc:creator><![CDATA[Eldarion]]></dc:creator><pubDate>Wed, 13 Jun 2007 13:59:13 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabewert mit new angelegt, wo loeschen? on Wed, 13 Jun 2007 15:33:44 GMT]]></title><description><![CDATA[<p>Eldarion schrieb:</p>
<blockquote>
<p>Konrad Rudolph schrieb:</p>
<blockquote>
<p>Wieso eigentlich ne Zeiger-Referenzübergabe? Wenn man schon s 'nen Zeiger nimmt, kann man ihn auch per 'return' zurückgeben. Besser wird's dadurch natürlich auch nicht …</p>
</blockquote>
<p>soll das heißen wenn man pointer returnt das das schlechter stil ist? ich finde es eig. nen gutes hilfsmittel um platz auf dem heap zusparen. was macht es für nen sinn nen riesiges objekt zu returnen? mann kann auch einfach nen pointer darauf returnen.</p>
</blockquote>
<p>ich finds schöner den benutzer das objekt selbst erstellen und übergeben zu lassen und referenzen zu verwenden, wenns um komplexe objekte geht.</p>
<pre><code class="language-cpp">void myfunc(Userobject &amp;o);

// statt

Userobject* myfunc();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1304997</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1304997</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Wed, 13 Jun 2007 15:33:44 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabewert mit new angelegt, wo loeschen? on Wed, 13 Jun 2007 15:48:48 GMT]]></title><description><![CDATA[<p>Eldarion schrieb:</p>
<blockquote>
<p>...<br />
soll das heißen wenn man pointer returnt das das schlechter stil ist? ...</p>
</blockquote>
<p>Ich denke, &quot;verteilte Zuständigkeiten&quot; machen oft eine Menge Probleme und dazu gehören auch (und gerade) die Trennung von &quot;Erzeuger&quot; und &quot;Löscher&quot;. (&quot;... Der Herr hat's gegeben, der Herr hat's genommen ...&quot; <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>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1305008</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1305008</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 13 Jun 2007 15:48:48 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabewert mit new angelegt, wo loeschen? on Wed, 13 Jun 2007 16:14:30 GMT]]></title><description><![CDATA[<p>danke für eure Bemühungen!</p>
<p>Ich denke ich weiss nun was zu tun ist</p>
<p>muli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1305033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1305033</guid><dc:creator><![CDATA[muli]]></dc:creator><pubDate>Wed, 13 Jun 2007 16:14:30 GMT</pubDate></item></channel></rss>