<?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[Unterschied pointer bei (eigenen) Klassen?]]></title><description><![CDATA[<p>Hallo!<br />
Ich bin zwar bei C++ lange kein blutiger Anfänger mehr habe aber ein Problem bei dem ich absolut nicht weiter weiß.</p>
<p>Bei:</p>
<pre><code class="language-cpp">klasse* sv = new klasse;
</code></pre>
<p>klappt alles (insbesondere die delete-abschnitte in der klasse). Wenn ich aber (was ich eigentlich will bloß mit ner variable)</p>
<pre><code class="language-cpp">klasse* sv = new klasse[1];
</code></pre>
<p>nutze kommt</p>
<p>*** glibc detected *** ./hunted: free(): invalid pointer: 0x000000000137ba78 ***</p>
<p>Eigentlich dürfte es doch keinen unterschied machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/232688/unterschied-pointer-bei-eigenen-klassen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 05:07:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/232688.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 25 Jan 2009 20:13:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Unterschied pointer bei (eigenen) Klassen? on Sun, 25 Jan 2009 20:13:34 GMT]]></title><description><![CDATA[<p>Hallo!<br />
Ich bin zwar bei C++ lange kein blutiger Anfänger mehr habe aber ein Problem bei dem ich absolut nicht weiter weiß.</p>
<p>Bei:</p>
<pre><code class="language-cpp">klasse* sv = new klasse;
</code></pre>
<p>klappt alles (insbesondere die delete-abschnitte in der klasse). Wenn ich aber (was ich eigentlich will bloß mit ner variable)</p>
<pre><code class="language-cpp">klasse* sv = new klasse[1];
</code></pre>
<p>nutze kommt</p>
<p>*** glibc detected *** ./hunted: free(): invalid pointer: 0x000000000137ba78 ***</p>
<p>Eigentlich dürfte es doch keinen unterschied machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1652258</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652258</guid><dc:creator><![CDATA[Trigger_Hurt]]></dc:creator><pubDate>Sun, 25 Jan 2009 20:13:34 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied pointer bei (eigenen) Klassen? on Sun, 25 Jan 2009 20:27:16 GMT]]></title><description><![CDATA[<p>Den Speicher hast du per new[] angefordert, also musst du ihn mit delete[] freigeben. Ob das jetzt 1 oder 100 Elemente sind..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1652264</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652264</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 25 Jan 2009 20:27:16 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied pointer bei (eigenen) Klassen? on Sun, 25 Jan 2009 22:05:28 GMT]]></title><description><![CDATA[<p>mache ich ja. Nur bei delete für die klasse kommt am Ende eben was unterschiedliches (crash oder eben nicht) und zwar abhängig davon welche variante ich nehme. Dabei dürfte doch dabei kein Unterschied bestehen, oder doch ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1652314</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652314</guid><dc:creator><![CDATA[Trigger_Hurt]]></dc:creator><pubDate>Sun, 25 Jan 2009 22:05:28 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied pointer bei (eigenen) Klassen? on Sun, 25 Jan 2009 22:11:30 GMT]]></title><description><![CDATA[<p>Nein, es macht einen Unterschied und wenn du es nicht mit dem richtigen Operator zerstörst, hast du undefiniertes Verhalten und crashen ist da sehr üblich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1652318</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652318</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 25 Jan 2009 22:11:30 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied pointer bei (eigenen) Klassen? on Mon, 26 Jan 2009 08:48:18 GMT]]></title><description><![CDATA[<p>Danke erstmal für alle Antworten!</p>
<p>Ich habe jetzt verstanden was ich tun muss, damit das Programm nicht mehr abstürzt. Ich weiß nur nicht genau warum ich das tun muss. Ich weiß natürlich dass man es so machen muss:</p>
<pre><code class="language-cpp">int* i = new int[100];
delete [] i;
//und
int* i = new int;
delete i;
</code></pre>
<p>Ich dachte aber das [] steht quasi für mehrere im Block Freizugebene. In meinem Programm fordere ich zwar im Block mehrere Klassen an (bsp oben). Speichere aber jede einzelne Adresse nochmal in nem pointer und delete dann die. Aber wie es jetzt aussieht nützt es nichts wenn ich jeden einzelnen Pointer auf jede einzelne Klasse delete. Ich muss trotzdem bei jeder einzelnen [] verwenden wenn ich das bei der Bereitstellung benutzt hab. Ich kann die einzelnen Elemente nicht ohne [] wieder freigeben.</p>
<p>Was ist denn der speichertechnische Unterschied zwischen [] und nicht [] den ich letztlich nicht bedacht hab?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1652438</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652438</guid><dc:creator><![CDATA[Trigger_Hurt]]></dc:creator><pubDate>Mon, 26 Jan 2009 08:48:18 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied pointer bei (eigenen) Klassen? on Mon, 26 Jan 2009 10:05:20 GMT]]></title><description><![CDATA[<p>Trigger_Hurt schrieb:</p>
<blockquote>
<p>Was ist denn der speichertechnische Unterschied zwischen [] und nicht [] den ich letztlich nicht bedacht hab?</p>
</blockquote>
<p>Bei der <code>delete[] ptr</code> -Version sagst Du dem Compiler, dass es sich um einen Pointer auf ein Array handelt, und dass beim löschen geguckt werden soll, wieviele Objekte wieder gelöscht werden sollen.<br />
Bei der <code>delete ptr</code> -Version sagst Du dem Compiler, dass der Pointer auf ein einzelnen Objekt zeigt das gelöscht werden soll.</p>
<p>Noch was:</p>
<pre><code class="language-cpp">int* pi_single = new int;
int* pi_array = new int[10];
</code></pre>
<p>Sowohl <code>pi_single</code> als auch <code>pi_array</code> sind von Typ her int*. Woher soll der Compiler nun bei einem <code>delete</code> wissen, ob die Pointer auf ein Array oder ein einzelnen Objekt zeigen? Am Pointer kann er das ja nicht sehen (ist in beiden Fällen <code>int*</code> . Diese Information gibst Du ihm über die [] beim <code>delete</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1652525</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652525</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Mon, 26 Jan 2009 10:05:20 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied pointer bei (eigenen) Klassen? on Mon, 26 Jan 2009 16:55:09 GMT]]></title><description><![CDATA[<p>okay! <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="🙂"
    /></p>
<blockquote>
<p>Woher soll der Compiler nun bei einem delete wissen, ob die Pointer auf ein Array oder ein einzelnen Objekt zeigen?</p>
</blockquote>
<p>Klar weiß er das nicht, aber warum geht es (manuell) nicht auch so ?</p>
<pre><code class="language-cpp">int *test = new int[100];

for(int i = 0;i&lt;100;i++)
	delete &amp;(test[i]);
</code></pre>
<p>Er muss ja nicht wissen dass es sich um ein array handelt wenn man es so macht... Klappt aber trotzdem nicht... <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="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1652742</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652742</guid><dc:creator><![CDATA[Trigger_Hurt]]></dc:creator><pubDate>Mon, 26 Jan 2009 16:55:09 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied pointer bei (eigenen) Klassen? on Mon, 26 Jan 2009 17:12:18 GMT]]></title><description><![CDATA[<p>Ich sehe keinen Grund, warum der Compiler das nicht wissen sollte(es sich irgendwie merkt) und intern nicht auch verwenden könnte? Zur Laufzeit ist es natürlich nicht bekannt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1652755</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652755</guid><dc:creator><![CDATA[JustAnotherNoob]]></dc:creator><pubDate>Mon, 26 Jan 2009 17:12:18 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied pointer bei (eigenen) Klassen? on Mon, 26 Jan 2009 17:21:37 GMT]]></title><description><![CDATA[<p>das geht so manuell _garnicht_. absolut nicht, weil der speicher für ein array<br />
anders aufgebaut ist. bei einem einzelnen datum weiß der compiler durch en typ<br />
wieviel er löschen muss. bei einem array gibt es 2 möglichkeiten. entweder der<br />
compiler allokiert mehr und kopiert vor den anfang die daten. oder er merkt sich<br />
global wie groß das array ist. man darf nicht davon ausgehen dass immer ein<br />
verfahren genutzt wird. du musst ihm also genau den zeiger übergeben, den du<br />
von new bekommen hast. alles andere, sogar ein +1 lässt das system abstürzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1652758</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652758</guid><dc:creator><![CDATA[helferlein]]></dc:creator><pubDate>Mon, 26 Jan 2009 17:21:37 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied pointer bei (eigenen) Klassen? on Mon, 26 Jan 2009 18:37:23 GMT]]></title><description><![CDATA[<p>Vielen Dank! Jetzt hab selbst ich es verstanden <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="😃"
    /> <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/1652798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652798</guid><dc:creator><![CDATA[Trigger_Hurt]]></dc:creator><pubDate>Mon, 26 Jan 2009 18:37:23 GMT</pubDate></item></channel></rss>