<?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[Probleme mit new .... und delete]]></title><description><![CDATA[<p>Hi,</p>
<p>Ich hab jetzt mal ne grundsaetliche Frage, weil ich glaube, ich mach das immer falsch und handel mir speicherloecher ein...</p>
<p>Also, soweit ich weiss muss alles was mit new erstellt wurde auch mit delete wieder zerstoert werden, und zwar in der selben Reihenfolge, richtig?</p>
<p>Soweit sogut, aber was mache ich denn, wenn ich in einer Methode etwas mit new erstelle und es als member-variable einer anderen Klasse einsetze:</p>
<p>{<br />
University uni1;<br />
Person * person = new Kanzler();<br />
uni1.setKanzler(person);<br />
//delete person??????;<br />
}</p>
<p>==&gt; In so einem Fall kann ich doch jetzt nicht einfach am Ende delete person rufen weil ich doch in der setKanzler()-methode die Speicheradresse uebergeben habe, ODER???? Ich kann doch jetzt nicht einfach diesen Speicherbereich kaputtmachen...Auf der anderen Seite, wenn ich delete nicht rufe, siehts auch irgednwie komisch aus......Was macht man denn in so einem Fall???..</p>
<p>Vielen Dank fuer jede Hilfe...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/242499/probleme-mit-new-und-delete</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 01:58:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/242499.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 04 Jun 2009 14:11:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme mit new .... und delete on Thu, 04 Jun 2009 14:11:01 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>Ich hab jetzt mal ne grundsaetliche Frage, weil ich glaube, ich mach das immer falsch und handel mir speicherloecher ein...</p>
<p>Also, soweit ich weiss muss alles was mit new erstellt wurde auch mit delete wieder zerstoert werden, und zwar in der selben Reihenfolge, richtig?</p>
<p>Soweit sogut, aber was mache ich denn, wenn ich in einer Methode etwas mit new erstelle und es als member-variable einer anderen Klasse einsetze:</p>
<p>{<br />
University uni1;<br />
Person * person = new Kanzler();<br />
uni1.setKanzler(person);<br />
//delete person??????;<br />
}</p>
<p>==&gt; In so einem Fall kann ich doch jetzt nicht einfach am Ende delete person rufen weil ich doch in der setKanzler()-methode die Speicheradresse uebergeben habe, ODER???? Ich kann doch jetzt nicht einfach diesen Speicherbereich kaputtmachen...Auf der anderen Seite, wenn ich delete nicht rufe, siehts auch irgednwie komisch aus......Was macht man denn in so einem Fall???..</p>
<p>Vielen Dank fuer jede Hilfe...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721105</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721105</guid><dc:creator><![CDATA[maxpower256]]></dc:creator><pubDate>Thu, 04 Jun 2009 14:11:01 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit new .... und delete on Thu, 04 Jun 2009 14:14:05 GMT]]></title><description><![CDATA[<p>Du musst dein Design so gestalten, dass klar ist, wer den Besitz über das Objekt hat. Normalerweise gibt derjenige den Speicher frei, der ihn anfordert. Wird der Kanzler einfach urplötzlich erzeugt und an eine Uni übergeben? Oder steckt da mehr dahinter? Eventuell musst du eine entsprechende Freigabefunktion implementieren.</p>
<p>Für gewisse Fälle gibt es auch Smart Pointer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721108</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721108</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 04 Jun 2009 14:14:05 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit new .... und delete on Thu, 04 Jun 2009 14:23:03 GMT]]></title><description><![CDATA[<p>maxpower256 schrieb:</p>
<blockquote>
<p>Also, soweit ich weiss muss alles was mit new erstellt wurde auch mit delete wieder zerstoert werden, <strong>und zwar in der selben Reihenfolge</strong>, richtig?</p>
</blockquote>
<p>Nein, das ist falsch - der Rest stimmt aber: auf jedes <code>new</code> muss genau ein <code>delete</code> kommen und auf jedes <code>new[]</code> ein <code>delete[]</code></p>
<pre><code class="language-cpp">{
   University uni1;
   Person * person = new Kanzler();
   uni1.setKanzler(person);
   //delete person??????; 
}
</code></pre>
<p>die frage an sich hat nexus ja schon beantwortet, aber:<br />
sieht aber so aus, als ob:<br />
- University komisch aufgebaut ist (wieso ptr und kein &quot;normales&quot; objekt?)<br />
- und (damit) der pointer unnötig wäre</p>
<p>hast du das selbst geschrieben?<br />
falls ja: Wieso hast du den Weg über Pointer gewählt?<br />
Wie sieht person denn in etwa aus und wie sieht University aus?<br />
Ich bin überzeugt davon, dass wir die Pointer dort alle wegbekommen und damit wesentlich zur Lesbarkeit deines Codes beitragen könnten ^^</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721114</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721114</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 04 Jun 2009 14:23:03 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit new .... und delete on Thu, 04 Jun 2009 14:56:04 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>zunaechst mal vielen dank fuer eure antworten....also, das mit den Klassen &quot;Uni&quot;, &quot;Person&quot; und &quot;Kanzler&quot; waren freie Erfindungen, um meine Frage moeglichst einfach zu illustrieren...die Wirklichkeit ist aehnlich strukturiert, aber noch etwas komplizierter...</p>
<p>Im wesentlichen habe ich es mit Polymorphen Klassen zu tun.....d.h. ich habe eine Basisklasse (z.b. Person) und davon abgeleited konkrete Kindklassen (z.b. Kanzler, Student usw.)...Ich bin jetzt kein C++ Experter, aber ich dachte, dass man fuer sowas IMMER auch Pointer braucht...</p>
<p>Person * person = new Kanzler();</p>
<p>Folglich, muss ich doch in der Klasse &quot;University&quot;, die membervariable als pointer gestalten, oder?? wie gesagt, das beispiel hier ist nur akademisch (im wahsten Sinne des Wortes, aber ich habe aehnliche Faelle in meiner Software und ich glaube, dass ich da irgendnen grundsaetzlichen denkfehler hab....bin wahrscheinlich zu Java-verseucht und erstelle schnell mal alles mit new...:)...)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721155</guid><dc:creator><![CDATA[maxpower256]]></dc:creator><pubDate>Thu, 04 Jun 2009 14:56:04 GMT</pubDate></item></channel></rss>