<?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[Exemplarkopie kann nicht mit delete gelöscht werden]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich arbeite gerade an einem klassenset für lineares Algebra.<br />
In einer Methode der Matrix klasse erstelle ich eine kopie des aktuellen<br />
Exemplars (Copy konstruktor ist explizit implementiert und funktioniert in anderen Tests). Gegen ende der methode möchte ich das kopierte Exemplar mit delete löschen dabei stürzt das Programm ab.</p>
<pre><code>[cpp]/*Crashing method*/
Matrix* Matrix::myMethod() throw(exception)
{
      /*Make a copy of this Matrix for use as a scratchpad*/
      Matrix thisObjectClone = *this;
      Matrix* Obj = &amp;thisObjectClone;	

      /* further code ..... */

     delete Obj; //free the memory of the scrathpad,[b] program crash![/b]

     return SomeMatrixPtr;
}

/*Copy Constructor of Matrix*/
Matrix::Matrix(const Matrix&amp; M) throw(exception)
	: linearAlgebra(M), nRows(M.nRows), nCols(M.nCols)
{
}

/*Copy Constructor of BaseClass*/
linearAlgebra::linearAlgebra(const linearAlgebra&amp; linAlg) throw(exception)
{
	this-&gt;nElements = linAlg.nElements; //copy number of elements
	this-&gt;Elements = new ftype[this-&gt;nElements]; //reserve memory for Elements

	memcpy ( this-&gt;Elements, linAlg.Elements, sizeof(ftype) *   this-&gt;nElements); //copy Elements
}
[/cpp]
</code></pre>
<p>Im disassembly sehe ich an der Programstelle (x86 ASM) mit dem delete aufruf:</p>
<pre><code>0xb0328be8 &lt;__prelocked_free+280&gt;: movswl 0x14(%eax),%esi
...
</code></pre>
<p>verwendete IDE: QNX<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/00ae.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--registered"
      title=":registered:"
      alt="®"
    /> Momentics<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/00ae.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--registered"
      title=":registered:"
      alt="®"
    /> Integrated Development Environment Eclipse Version: 4.5.0</p>
<p>Liegt der Fehler an memcpy? Was soll ich sonst verwenden (außer ner Schleife)?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/244322/exemplarkopie-kann-nicht-mit-delete-gelöscht-werden</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 11:25:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/244322.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 28 Jun 2009 13:15:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Exemplarkopie kann nicht mit delete gelöscht werden on Sun, 28 Jun 2009 13:15:47 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich arbeite gerade an einem klassenset für lineares Algebra.<br />
In einer Methode der Matrix klasse erstelle ich eine kopie des aktuellen<br />
Exemplars (Copy konstruktor ist explizit implementiert und funktioniert in anderen Tests). Gegen ende der methode möchte ich das kopierte Exemplar mit delete löschen dabei stürzt das Programm ab.</p>
<pre><code>[cpp]/*Crashing method*/
Matrix* Matrix::myMethod() throw(exception)
{
      /*Make a copy of this Matrix for use as a scratchpad*/
      Matrix thisObjectClone = *this;
      Matrix* Obj = &amp;thisObjectClone;	

      /* further code ..... */

     delete Obj; //free the memory of the scrathpad,[b] program crash![/b]

     return SomeMatrixPtr;
}

/*Copy Constructor of Matrix*/
Matrix::Matrix(const Matrix&amp; M) throw(exception)
	: linearAlgebra(M), nRows(M.nRows), nCols(M.nCols)
{
}

/*Copy Constructor of BaseClass*/
linearAlgebra::linearAlgebra(const linearAlgebra&amp; linAlg) throw(exception)
{
	this-&gt;nElements = linAlg.nElements; //copy number of elements
	this-&gt;Elements = new ftype[this-&gt;nElements]; //reserve memory for Elements

	memcpy ( this-&gt;Elements, linAlg.Elements, sizeof(ftype) *   this-&gt;nElements); //copy Elements
}
[/cpp]
</code></pre>
<p>Im disassembly sehe ich an der Programstelle (x86 ASM) mit dem delete aufruf:</p>
<pre><code>0xb0328be8 &lt;__prelocked_free+280&gt;: movswl 0x14(%eax),%esi
...
</code></pre>
<p>verwendete IDE: QNX<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/00ae.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--registered"
      title=":registered:"
      alt="®"
    /> Momentics<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/00ae.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--registered"
      title=":registered:"
      alt="®"
    /> Integrated Development Environment Eclipse Version: 4.5.0</p>
<p>Liegt der Fehler an memcpy? Was soll ich sonst verwenden (außer ner Schleife)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1734057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1734057</guid><dc:creator><![CDATA[MrWhite]]></dc:creator><pubDate>Sun, 28 Jun 2009 13:15:47 GMT</pubDate></item><item><title><![CDATA[Reply to Exemplarkopie kann nicht mit delete gelöscht werden on Sun, 28 Jun 2009 13:40:35 GMT]]></title><description><![CDATA[<p>Du erstellst ein Objekt mit automatischer Speicherklasse:</p>
<pre><code class="language-cpp">Matrix thisObjectClone = *this;
</code></pre>
<p>Dann willst du dieses explizit freigeben, was natürlich zu einem Fehler führt:</p>
<pre><code class="language-cpp">delete Obj; // Obj zeigt auf thisObjectClone
</code></pre>
<p>Wenn du also eine Klonfunktion willst, solltest du das neue Objekt mit <code>new</code> anlegen, damit es die Funktion überlebt. So brauchst du aber auch eine entsprechende Freigabefunktion. Auch eine Möglichkeit wäre, einen <code>std::auto_ptr</code> zurückzugeben. Wenn die Kopie nur innerhalb der Funktion benötigt wird, lässt du sie auf dem Stack, dann wird sie automatisch abgeräumt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1734072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1734072</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 28 Jun 2009 13:40:35 GMT</pubDate></item><item><title><![CDATA[Reply to Exemplarkopie kann nicht mit delete gelöscht werden on Sun, 28 Jun 2009 15:18:18 GMT]]></title><description><![CDATA[<p>Danke für die schnelle Antwort,</p>
<p>in diesem fall brauch ich das Exemplar nur innerhalb der methode um temporär damit zu arbeiten.<br />
Das Problem ist eher das das objekt ein dynamisches array enthält das am heap liegt, darum wollt ich es mit delete löschen damit der destruktoraufgerufen wird.</p>
<p>Es ist mir auch nicht möglich nur das array freizugeben:</p>
<pre><code>[cpp]
delete[] Obj-&gt;Elements;[/cpp]
</code></pre>
<p>da das programm da ebenfalls crasht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1734112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1734112</guid><dc:creator><![CDATA[MrWhite]]></dc:creator><pubDate>Sun, 28 Jun 2009 15:18:18 GMT</pubDate></item><item><title><![CDATA[Reply to Exemplarkopie kann nicht mit delete gelöscht werden on Sun, 28 Jun 2009 15:06:01 GMT]]></title><description><![CDATA[<p>Räum die Member dort auf, wo das auch hingehört. In den Destruktor..</p>
<pre><code class="language-cpp">Matrix::~Matrix ()
{
   delete[] Elements;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1734116</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1734116</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 28 Jun 2009 15:06:01 GMT</pubDate></item><item><title><![CDATA[Reply to Exemplarkopie kann nicht mit delete gelöscht werden on Sun, 28 Jun 2009 15:07:03 GMT]]></title><description><![CDATA[<p>MrWhite schrieb:</p>
<blockquote>
<p>Das Problem ist eher das das objekt ein dynamisches array enthält das am heap liegt, darum wollt ich es mit delete löschen damit der destruktoraufgerufen wird.</p>
</blockquote>
<p>Das sollte dich aber nicht kümmern. Wieso hast du das Objekt nicht so eingerichtet, dass es in seinem Destruktor den angeforderten Speicher wieder freigibt? Von aussen Membervariablen freizugeben ist meist schlechtes Design und im Übrigen auch sehr fehler- und leakanfällig.</p>
<p>Wenn die Klasse ihre eigene Speicherverwaltung hat, kannst du schön auf dem Stack arbeiten, und alles wird sauber aufgeräumt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1734118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1734118</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 28 Jun 2009 15:07:03 GMT</pubDate></item><item><title><![CDATA[Reply to Exemplarkopie kann nicht mit delete gelöscht werden on Sun, 28 Jun 2009 15:29:01 GMT]]></title><description><![CDATA[<p>Der speicher wird im destruktor freigegeben.<br />
Soweit ich es verstehe muss das exemplar mit delete gelöscht werden damit der dekonstruktor aufgerufen wird.<br />
Oder wird dieser auch aufgerufen wenn der gültigkeitsbereich der variablen aus ist und es vom stack entfernt wird?</p>
<pre><code class="language-cpp">[code]linearAlgebra::~linearAlgebra() //base class destruktor
{
	delete[] this-&gt;Elements;
}[/code]
</code></pre>
<p>also ohne:</p>
<pre><code>delete Obj;
</code></pre>
<p>wird</p>
<pre><code>~linearAlgebra();
</code></pre>
<p>nie ausgeführt.</p>
<p>Oder doch?, wenn ja wann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1734130</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1734130</guid><dc:creator><![CDATA[MrWhite]]></dc:creator><pubDate>Sun, 28 Jun 2009 15:29:01 GMT</pubDate></item><item><title><![CDATA[Reply to Exemplarkopie kann nicht mit delete gelöscht werden on Sun, 28 Jun 2009 15:32:08 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Wenn die Klasse ihre eigene Speicherverwaltung hat, kannst du schön auf dem Stack arbeiten, und alles wird sauber aufgeräumt.</p>
</blockquote>
<p>Bedeutet &quot;eigene Speicherverwaltung&quot; das im constructor der speicher reserviert wird und im destruktor freigegeben? Das ist so bei mir.<br />
Aber ich dachte der destructor wird nur ausgerufen wenn ich das objekt mit delete entferne.</p>
<p>Wann wird der destructor nun tatsächlich aufgerufen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1734143</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1734143</guid><dc:creator><![CDATA[MrWhite]]></dc:creator><pubDate>Sun, 28 Jun 2009 15:32:08 GMT</pubDate></item><item><title><![CDATA[Reply to Exemplarkopie kann nicht mit delete gelöscht werden on Sun, 28 Jun 2009 15:39:45 GMT]]></title><description><![CDATA[<p>MrWhite schrieb:</p>
<blockquote>
<p>Soweit ich es verstehe muss das exemplar mit delete gelöscht werden damit der dekonstruktor aufgerufen wird.</p>
</blockquote>
<p>Nicht, wenn das Objekt im automatischen Speicher angelegt worden ist. Dann passiert das .... *trommelwirbel* .... automatisch. <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>Das ist ja gerade der Witz an den Konstruktoren und Destruktoren. Du kannst &quot;Resourcen&quot; (inklusige reservierten Speicher) in Klassen-Objekte kapseln und die Verwaltung einzig allein dieser Klasse überlassen. Du hättest Dir zB mit einem <code>std::vector</code> viel Ärger ersparen können. Ein <code>vector</code> verwaltet seine Elemente selbst und wenn Du für Deine Matrix-Klasse einen <code>vector</code> statt einem Zeiger als Objekt-Element benutzt hättest, bräuchtest Du auch keinen besonderen Kopier-Konstruktor, Zuweisungsoperator, etc etc etc.</p>
<p>Und sonst: Zu jedem <code>new</code> gehört das entsprechende <code>delete</code> dazu. Das gleiche gilt natürlich auch für <code>new[]</code> und <code>delete[]</code> .</p>
<p>Du solltest diese C++ <em>Basics</em> nachholen. Wie hast Du bisher C++ gelernt?</p>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1734149</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1734149</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Sun, 28 Jun 2009 15:39:45 GMT</pubDate></item><item><title><![CDATA[Reply to Exemplarkopie kann nicht mit delete gelöscht werden on Sun, 28 Jun 2009 15:49:15 GMT]]></title><description><![CDATA[<p>Sebastian Pizer schrieb:</p>
<blockquote>
<p>MrWhite schrieb:</p>
<blockquote>
<p>Soweit ich es verstehe muss das exemplar mit delete gelöscht werden damit der dekonstruktor aufgerufen wird.</p>
</blockquote>
<p>Nicht, wenn das Objekt im automatischen Speicher angelegt worden ist. Dann passiert das .... *trommelwirbel* .... automatisch. <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>
</blockquote>
<p>Hmm, automatischer speicher, kommt in meinem C++ Buch net vor.</p>
<blockquote>
<p>Du hättest Dir zB mit einem <code>std::vector</code> viel Ärger ersparen können. Ein <code>vector</code> verwaltet seine Elemente selbst und wenn Du für Deine Matrix-Klasse einen <code>vector</code> statt einem Zeiger als Objekt-Element benutzt hättest, bräuchtest Du auch keinen besonderen Kopier-Konstruktor, Zuweisungsoperator, etc etc etc.</p>
</blockquote>
<p>Ich weiß, aber dann wär zu jedem 32bit ftype noch ein 32 ptr gekommen.<br />
Was ich vermeiden wollte.</p>
<blockquote>
<p>Und sonst: Zu jedem <code>new</code> gehört das entsprechende <code>delete</code> dazu. Das gleiche gilt natürlich auch für <code>new[]</code> und <code>delete[]</code> .</p>
</blockquote>
<p>Ich dachte ein aufruf über den copy constructor wäre ne andere art zu schreiben new... und dann alle elemente mit der hand zu kopieren.</p>
<blockquote>
<p>Du solltest diese C++ <em>Basics</em> nachholen. Wie hast Du bisher C++ gelernt?</p>
</blockquote>
<p>Gleich wie jeder andere, ich hab dumme fragen in foren gestellt um angepöbelt zu werden wo ich C++ gelernt hab.</p>
<p>mfg MrWhite</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1734151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1734151</guid><dc:creator><![CDATA[MrWhite]]></dc:creator><pubDate>Sun, 28 Jun 2009 15:49:15 GMT</pubDate></item><item><title><![CDATA[Reply to Exemplarkopie kann nicht mit delete gelöscht werden on Sun, 28 Jun 2009 16:19:31 GMT]]></title><description><![CDATA[<blockquote>
<p>Gleich wie jeder andere, ich hab dumme fragen in foren gestellt um angepöbelt zu werden wo ich C++ gelernt hab.</p>
</blockquote>
<p>Sei nicht gleich eingeschnappt. Die Frage war berechtigt.</p>
<p>Wenn ich so etwas lese:</p>
<blockquote>
<p>Ich dachte ein aufruf über den copy constructor wäre ne andere art zu schreiben new... und dann alle elemente mit der hand zu kopieren.</p>
</blockquote>
<p>Dann weist das mich auch darauf hin, dass die Grundlagen einfach nicht verstanden worden sind und würde demjenigen auch raten ein gutes Buch zu kaufen und das sorgfältig durchzuarbeiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1734158</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1734158</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 28 Jun 2009 16:19:31 GMT</pubDate></item><item><title><![CDATA[Reply to Exemplarkopie kann nicht mit delete gelöscht werden on Sun, 28 Jun 2009 16:29:22 GMT]]></title><description><![CDATA[<p>MrWhite schrieb:</p>
<blockquote>
<p>Hmm, automatischer speicher, kommt in meinem C++ Buch net vor.</p>
</blockquote>
<p>Dann ist das Entweder ein schlechtes Buch, Du kannst nicht lesen, oder es wird ein anderer Begriff dafür verwendet. Im Original wird da von &quot;automatic storage&quot; gesprochen.</p>
<p>MrWhite schrieb:</p>
<blockquote>
<blockquote>
<p>Du hättest Dir zB mit einem <code>std::vector</code> viel Ärger ersparen können. [...]</p>
</blockquote>
<p>Ich weiß, aber dann wär zu jedem 32bit ftype noch ein 32 ptr gekommen.<br />
Was ich vermeiden wollte.</p>
</blockquote>
<p>Wie bitte? Bist Du sicher?</p>
<p>MrWhite schrieb:</p>
<blockquote>
<blockquote>
<p>Und sonst: Zu jedem <code>new</code> gehört das entsprechende <code>delete</code> dazu. [...]</p>
</blockquote>
<p>Ich dachte ein aufruf über den copy constructor wäre ne andere art zu schreiben new... und dann alle elemente mit der hand zu kopieren.</p>
</blockquote>
<p>Falsch gedacht. Nachlesen.</p>
<p>MrWhite schrieb:</p>
<blockquote>
<blockquote>
<p>Wie hast Du bisher C++ gelernt?</p>
</blockquote>
<p>Gleich wie jeder andere, ich hab dumme fragen in foren gestellt um angepöbelt zu werden wo ich C++ gelernt hab.</p>
</blockquote>
<p>Dann hast Du ja alles richtig gemacht. <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>Im Ernst: Ich wollt nur wissen, ob Du ein schlaues Buch verwendest. Da sollte so etwas nämlich drinstehen.</p>
<p>Wenn ich raten sollte:<br />
Du hast einfach Teile des Buchs übersprungen, weil Du gedacht hast, man könne diese Lücken mit dem Wissen über eine andere Programmiersprache füllen. ZB ist Deine Annahme, dass ein <code>std::vector</code> für jedes Element einen Zeiger speichert, einfach falsch. Wir sind hier nicht im Java-Land -- oder was auch immer Dein Background ist. Ok, es ist kein Weltuntergang. Es ist aber Beweis genug, dass Du die Sprachunterschiede unterschätzt hast. -- Nicht persönlich nehmen.</p>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1734162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1734162</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Sun, 28 Jun 2009 16:29:22 GMT</pubDate></item><item><title><![CDATA[Reply to Exemplarkopie kann nicht mit delete gelöscht werden on Sun, 28 Jun 2009 16:55:21 GMT]]></title><description><![CDATA[<p>Wo kann ich das mit dem STL-vectoren nachlesen? (online)</p>
<p>Bzw woher weiß man wo das nächste element ist, wenn seine position weder einem algorithmus folgt noch eine referenz dafür da ist unter welcher adresse man es finden kann. Vorallem wie wird das in Assemble geschrieben, ohne indirekte adressierung oder vorhersagbahre speicherorte?</p>
<p>Buch ist &quot;DirectX9 und Visual C++&quot;, hab mir danach nie die mühe gemacht ein weiteres werk über C++ zu lesen, JAVA hab ich tatsöchlich ein buch gelesen, aber ich mag die sprache persönlich net.</p>
<p>Das meißte kann ich umsetzten, wenn dennoch probleme auftreten lese ich konkret nach (habe unter mehreren referenzen copy constructor nachgeschlagen, nirgends stand was von ner anderen speicherverwaltung), wenn das nicht hilft frag ich in nem forum.<br />
Prinzipiell habe ich die Gabe jede frage so zu formulieren das die diskussion eskaliert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1734167</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1734167</guid><dc:creator><![CDATA[MrWhite]]></dc:creator><pubDate>Sun, 28 Jun 2009 16:55:21 GMT</pubDate></item><item><title><![CDATA[Reply to Exemplarkopie kann nicht mit delete gelöscht werden on Sun, 28 Jun 2009 16:59:42 GMT]]></title><description><![CDATA[<p>Hier ist eine gute Referenz:</p>
<p><a href="http://www.cplusplus.com/reference/" rel="nofollow">http://www.cplusplus.com/reference/</a></p>
<p>Dennoch würde ich dir ein Buch, wie z.B &quot;Die C++ Programmiersprache&quot; empfehlen, wo wichtige Sachen, wie die Speichermanagement drin stehen und viele nützliche Details ebenfalls zu finden sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1734174</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1734174</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 28 Jun 2009 16:59:42 GMT</pubDate></item><item><title><![CDATA[Reply to Exemplarkopie kann nicht mit delete gelöscht werden on Sun, 28 Jun 2009 17:04:42 GMT]]></title><description><![CDATA[<p>MrWhite schrieb:</p>
<blockquote>
<p>Wo kann ich das mit dem STL-vectoren nachlesen? (online)</p>
</blockquote>
<p>Zum Beispiel im <a href="http://magazin.c-plusplus.net/artikel/Aufbau%20der%20STL%20-%20Teil%201%3A%20Container" rel="nofollow">Forum-Artikel</a>.</p>
<p>MrWhite schrieb:</p>
<blockquote>
<p>Bzw woher weiß man wo das nächste element ist, wenn seine position weder einem algorithmus folgt noch eine referenz dafür da ist unter welcher adresse man es finden kann. Vorallem wie wird das in Assemble geschrieben, ohne indirekte adressierung oder vorhersagbahre speicherorte?</p>
</blockquote>
<p>Was meinst du mit nächstem Element? Ich verstehe nicht ganz, was du sagen willst.</p>
<p>MrWhite schrieb:</p>
<blockquote>
<p>Prinzipiell habe ich die Gabe jede frage so zu formulieren das die diskussion eskaliert.</p>
</blockquote>
<p>Wenn du konstruktive Kritik und Verbesserungsvorschläge als Eskalation betrachtest, bist du wahrscheinlich ein wenig empfindlich. In diesem Thread wurde dir wirklich nur geholfen. Ein Hinweis, dass du die Grundlagen nochmals anschauen solltest, liegt wohl noch drin.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1734177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1734177</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 28 Jun 2009 17:04:42 GMT</pubDate></item><item><title><![CDATA[Reply to Exemplarkopie kann nicht mit delete gelöscht werden on Sun, 28 Jun 2009 17:08:45 GMT]]></title><description><![CDATA[<p>ok, ich hab halt selbst vektoren implementiert,<br />
meine daten werden zur laufzeit net größer, es is alles vorhersagbar, eigentlich<br />
hätt ich alles komplett statisch machen können (wenns net manchmal unbequemer wär).<br />
Ja ich muss mich halt selber um den speicher kümmern, aber das eh nur an wenigen stellen in der klasse, das is in dem fall verkraftbar.</p>
<p>Und ich dachte halt an stl::list.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1734182</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1734182</guid><dc:creator><![CDATA[MrWhite]]></dc:creator><pubDate>Sun, 28 Jun 2009 17:08:45 GMT</pubDate></item><item><title><![CDATA[Reply to Exemplarkopie kann nicht mit delete gelöscht werden on Sun, 28 Jun 2009 17:12:42 GMT]]></title><description><![CDATA[<p>MrWhite schrieb:</p>
<blockquote>
<p>ok, ich hab halt selbst vektoren implementiert,</p>
</blockquote>
<p>Es hat meistens keinen Sinn, das Rad neu zu erfinden. Das wird mit grosser Wahrscheinlichkeit fehleranfälliger und ineffizienter als die Standard-Lösung.</p>
<p>MrWhite schrieb:</p>
<blockquote>
<p>meine daten werden zur laufzeit net größer, es is alles vorhersagbar, eigentlich<br />
hätt ich alles komplett statisch machen können (wenns net manchmal unbequemer wär).</p>
</blockquote>
<p>Dann kannst du dir vielleicht auch mal <code>std::tr1::array</code> (bzw. <code>boost::array</code> ) anschauen. Aber versuch, so wenig wie möglich mit rohen Zeigern und Arrays zu arbeiten.</p>
<p>MrWhite schrieb:</p>
<blockquote>
<p>Ja ich muss mich halt selber um den speicher kümmern, aber das eh nur an wenigen stellen in der klasse, das is in dem fall verkraftbar.</p>
</blockquote>
<p>Denk dran, Kopierkonstruktor und Zuweisungsoperator auch zu implementieren, sobald du einen selbstgeschriebenen Destruktor hast (Rule of the Big Three).</p>
<p>MrWhite schrieb:</p>
<blockquote>
<p>Und ich dachte halt an stl::list.</p>
</blockquote>
<p><code>std::list</code> ist genauso dynamisch wie <code>std::vector</code> . Es handelt sich halt um eine andere Datenstruktur, deren Stärken und Schwächen an anderen Orten liegen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1734185</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1734185</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 28 Jun 2009 17:12:42 GMT</pubDate></item></channel></rss>