<?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[Segmentation Fault bei Vector]]></title><description><![CDATA[<p>Hallo,</p>
<p>gibt es eine Erklärung, warum ich bei folgendem zweiten std::cout-Aufruf einen Segmentation Fault bekomme, während der erste Aufruf ohne Probleme klappt?</p>
<pre><code>Dingsbums* dings = new Dingsbums(...);
std::vector&lt;Dingsbums*&gt; vec(0);
std::cout &lt;&lt; dings-&gt;getDings() &lt;&lt; std::endl;
vec.push_back(dings);
std::cout &lt;&lt; dings-&gt;getDings() &lt;&lt; std::endl;
</code></pre>
<p>Kann es mir absolut nicht erklären..</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/320111/segmentation-fault-bei-vector</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Jul 2026 09:43:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/320111.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 16 Sep 2013 15:35:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Segmentation Fault bei Vector on Mon, 16 Sep 2013 15:35:24 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>gibt es eine Erklärung, warum ich bei folgendem zweiten std::cout-Aufruf einen Segmentation Fault bekomme, während der erste Aufruf ohne Probleme klappt?</p>
<pre><code>Dingsbums* dings = new Dingsbums(...);
std::vector&lt;Dingsbums*&gt; vec(0);
std::cout &lt;&lt; dings-&gt;getDings() &lt;&lt; std::endl;
vec.push_back(dings);
std::cout &lt;&lt; dings-&gt;getDings() &lt;&lt; std::endl;
</code></pre>
<p>Kann es mir absolut nicht erklären..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2352999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2352999</guid><dc:creator><![CDATA[mikemodanoxxx]]></dc:creator><pubDate>Mon, 16 Sep 2013 15:35:24 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation Fault bei Vector on Mon, 16 Sep 2013 15:36:56 GMT]]></title><description><![CDATA[<p>Die Fehlerstelle ist nicht immer die Stelle, wo du was falsch machst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2353000</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2353000</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Mon, 16 Sep 2013 15:36:56 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation Fault bei Vector on Mon, 16 Sep 2013 15:39:09 GMT]]></title><description><![CDATA[<p>Das wird definitiv daran liegen, dass in der Methode <code>getDings</code> irgendetwas abläuft, sodass beim zweiten Aufruf etwas schiefgeht.<br />
Dass hat<br />
1. mit <code>vector</code> <strong>nichts</strong> zu tun. <code>vector</code> speichert einfach nur einen Zeiger ab. Das wars.<br />
2. wahrscheinlich eine Ursache, die auf fehlendes RAII in deinem Code zurückzuführen ist.</p>
<p>Zeige mal die Definition von <code>Dingsbums</code> und <code>getDings.</code></p>
<p>P.S.: Wieso gibst du die Länge beim <code>vector</code> als 0 an? Dann lass es doch gleich weg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2353002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2353002</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Mon, 16 Sep 2013 15:39:09 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation Fault bei Vector on Mon, 16 Sep 2013 16:12:21 GMT]]></title><description><![CDATA[<p>Okay. Ich melde mich morgen noch einmal, da ich den Code gerade nicht zur Hand habe. Die get-Methode ist aber eigentlich nur ein einfacher getter, der eine double-Variable zurückgibt. Deswegen konnte ich mir auch dort den Fehler nicht erklären.</p>
<p>Der Code ist vereinfacht. Eigentlich wird der Vektor im Konstruktor des Objektes initialisiert und dann passiert beim Aufruf der Funktion folgendes:</p>
<pre><code>public Klasse1::methode(double wert) {
Klasse2* ptr = new Klasse2(wert);
vec.push_back(ptr);
return ptr;
}
</code></pre>
<p>Wenn ich das so stehen habe erhalte ich den Fehler in der return-Anweisung.</p>
<p>PS: Schaden tut das mit der 0 aber doch auch nicht. Ich finde es irgendwie übersichtlicher so.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2353013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2353013</guid><dc:creator><![CDATA[mikemodanoxxx]]></dc:creator><pubDate>Mon, 16 Sep 2013 16:12:21 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation Fault bei Vector on Mon, 16 Sep 2013 16:15:23 GMT]]></title><description><![CDATA[<blockquote>
<p>Schaden tut das mit der 0 aber doch auch nicht. Ich finde es irgendwie übersichtlicher so.</p>
</blockquote>
<p>Es ist falsch so zu denken, weil dann andere Programmierer verwirrt werden könnten. Hier nicht, aber bei anderen &quot;Schreibweisen&quot; schon.</p>
<blockquote>
<p>Wenn ich das so stehen habe erhalte ich den Fehler in der return-Anweisung.</p>
</blockquote>
<p>Was ist denn der Rückgabewert? Vielleicht muss da ja konvertiert werden und ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2353015</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2353015</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Mon, 16 Sep 2013 16:15:23 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation Fault bei Vector on Mon, 16 Sep 2013 16:18:59 GMT]]></title><description><![CDATA[<p>Deine Codes sind zu stark vereinfacht, nicht einmal grundlegende Syntax ist richtig. Siehe bitte:<br />
<a href="http://www.c-plusplus.net/forum/304133" rel="nofollow">http://www.c-plusplus.net/forum/304133</a></p>
<p>Aber wie Sone schon gesagt hat, der Fehler ist an mit Sicherheit grenzender Wahrscheinlichkeit auf die Nichtbenutzung von RAII zurück zu führen. Höchstwahrscheinlich brauchst du nicht einmal manuelle Speicherverwaltung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2353016</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2353016</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 16 Sep 2013 16:18:59 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation Fault bei Vector on Mon, 16 Sep 2013 16:20:17 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<blockquote>
<p>Schaden tut das mit der 0 aber doch auch nicht. Ich finde es irgendwie übersichtlicher so.</p>
</blockquote>
<p>Es ist falsch so zu denken, weil dann andere Programmierer verwirrt werden könnten. Hier nicht, aber bei anderen &quot;Schreibweisen&quot; schon.</p>
</blockquote>
<p>Naja, es impliziert, dass die 0 eine besondere Bedeutung hat. Und das muss man erstmal verstehen als dritter. Sei es, dass der Vector leer sein soll oder dass da sonstwas passieren soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2353017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2353017</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 16 Sep 2013 16:20:17 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation Fault bei Vector on Mon, 16 Sep 2013 16:29:51 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>Naja, es impliziert, dass die 0 eine besondere Bedeutung hat. Und das muss man erstmal verstehen als dritter. Sei es, dass der Vector leer sein soll oder dass da sonstwas passieren soll.</p>
</blockquote>
<p>Das stimmt, das impliziert es.</p>
<p>Nun, ich habe es sofort erkannt (mir wie dir sind die Konstruktoren gut bekannt), aber es macht den Code eben einfach weniger lesbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2353023</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2353023</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Mon, 16 Sep 2013 16:29:51 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation Fault bei Vector on Mon, 16 Sep 2013 16:52:00 GMT]]></title><description><![CDATA[<p>Mir ist der Konstruktor auch bekannt, aber ich hatte trotzdem einen &quot;hä?&quot; Moment.<br />
Weil es einfach unüblich ist die Grösse explizit anzugeben, wenn man eh nen leeren Vektor haben will.</p>
<p>Bei anderen Sachen sieht man oft dass explizit das Default-Verhalten angegeben wird. z.B. Klassen die mit <code>private:</code> anfangen, oder explizites <code>private</code> bei Basisklassen von Klassen (bzw. explizites <code>public</code> bei Basisklassen von Structs).<br />
Oder <code>virtual</code> beim Überschreiben von virtuellen Methoden.<br />
Oder ein <code>return 0;</code> am ende der <code>main()</code> Funktion <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>Da ist man es gewohnt, und liest einfach drüber.<br />
Bei anderen Dingen denkt man dann aber schnell &quot;das würde nicht da stehen wenn es nicht da stehen müsste&quot;, und braucht dann ein paar Sekunden um zu checken dass es wirklich redundant ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2353030</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2353030</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 16 Sep 2013 16:52:00 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation Fault bei Vector on Tue, 17 Sep 2013 18:55:57 GMT]]></title><description><![CDATA[<p>Ich habe den Fehler mittlerweile gefunden.</p>
<pre><code>public Klasse2* Klasse1::methode(double wert) {
Klasse2* ptr = new Klasse2(wert);
vec.push_back(ptr);
return ptr;
}
</code></pre>
<p>Es lag nicht an der Funktion sondern an dessen Aufruf:</p>
<pre><code>Klasse1 obj = new Klasse1();
double wert = 4;
aufruf2(test[wert], obj-&gt;methode(wert));
</code></pre>
<p>Der Fehler lag daran, dass in der Map test der Wert nicht vorhanden war. Wieso der Fehler allerdings dann innerhalb der Methode angezeigt wird ist mir ein Rätsel. Danke jedenfalls für die Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2353249</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2353249</guid><dc:creator><![CDATA[mikemodanoxxx]]></dc:creator><pubDate>Tue, 17 Sep 2013 18:55:57 GMT</pubDate></item></channel></rss>