<?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[sinnvoll &amp;quot;index out of range&amp;quot; debbugen]]></title><description><![CDATA[<p>Guten Morgen,</p>
<p>ich bräuchte mal Tips dazu, wie man vernünftig oben genannten Fehler debugt.<br />
Zu meinem Problem; Da auch ich inzwischen gelernt habe, dass es unnötig ist QVector auf den Heap zu legen, da dieser das automatisch macht, hab ich jetzt alle meine QVectoren wieder auf den Stack gelegt. Seit dem bekomme ich selten aber regelmäßig den Fehler &quot;index out of range&quot;. Leider scheint dieser Fehler immer an einer anderen Stelle des Programms aufzutauchen, weshalb ich nicht weiß, wie ich den Bereich eingrenzen soll.<br />
Wenn die Vectoren auf dem Heap liegen, tritt der Fehler nicht auf.<br />
Das Programm ist multithreaded und benutzt die Qt Bibliothek. Programmiert wird in Visual Studio 2010.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/304638/sinnvoll-quot-index-out-of-range-quot-debbugen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 09 Aug 2026 10:03:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/304638.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 11 Jun 2012 08:00:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to sinnvoll &amp;quot;index out of range&amp;quot; debbugen on Mon, 11 Jun 2012 08:00:02 GMT]]></title><description><![CDATA[<p>Guten Morgen,</p>
<p>ich bräuchte mal Tips dazu, wie man vernünftig oben genannten Fehler debugt.<br />
Zu meinem Problem; Da auch ich inzwischen gelernt habe, dass es unnötig ist QVector auf den Heap zu legen, da dieser das automatisch macht, hab ich jetzt alle meine QVectoren wieder auf den Stack gelegt. Seit dem bekomme ich selten aber regelmäßig den Fehler &quot;index out of range&quot;. Leider scheint dieser Fehler immer an einer anderen Stelle des Programms aufzutauchen, weshalb ich nicht weiß, wie ich den Bereich eingrenzen soll.<br />
Wenn die Vectoren auf dem Heap liegen, tritt der Fehler nicht auf.<br />
Das Programm ist multithreaded und benutzt die Qt Bibliothek. Programmiert wird in Visual Studio 2010.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2221913</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2221913</guid><dc:creator><![CDATA[Kron]]></dc:creator><pubDate>Mon, 11 Jun 2012 08:00:02 GMT</pubDate></item><item><title><![CDATA[Reply to sinnvoll &amp;quot;index out of range&amp;quot; debbugen on Mon, 11 Jun 2012 08:02:59 GMT]]></title><description><![CDATA[<p><code>assert</code> ? Exception?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2221915</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2221915</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Mon, 11 Jun 2012 08:02:59 GMT</pubDate></item><item><title><![CDATA[Reply to sinnvoll &amp;quot;index out of range&amp;quot; debbugen on Mon, 11 Jun 2012 08:05:49 GMT]]></title><description><![CDATA[<p>hast du alle Zugriffe mit einem Mutex geschützt? &quot;Tritt immer woanders auf&quot; klingt so ein wenig nach einem Synchronisationsproblem</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2221918</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2221918</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Mon, 11 Jun 2012 08:05:49 GMT</pubDate></item><item><title><![CDATA[Reply to sinnvoll &amp;quot;index out of range&amp;quot; debbugen on Mon, 11 Jun 2012 08:16:38 GMT]]></title><description><![CDATA[<p>Zugriffe sind alle mit Mutex geschützt. vorher auf dem Heap trat der Fehler auch nicht auf und das Programm war da schon multithreaded.</p>
<p>&quot;assert Exception&quot; hab ich mich schonmal dran versucht. Muss ich zugeben, dass ich nicht weiß wie ich es sinnvoll einsetzen kann. Vll eine kurze Beschreibung oder ein guter Link. Komm mit dem Programmieren eigentlich gut zurecht, nur was die exceptions angeht steh ich etwas aufm Schlauch <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/2221923</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2221923</guid><dc:creator><![CDATA[Kron]]></dc:creator><pubDate>Mon, 11 Jun 2012 08:16:38 GMT</pubDate></item><item><title><![CDATA[Reply to sinnvoll &amp;quot;index out of range&amp;quot; debbugen on Mon, 11 Jun 2012 08:22:30 GMT]]></title><description><![CDATA[<p>Kron schrieb:</p>
<blockquote>
<p>Zugriffe sind alle mit Mutex geschützt.</p>
</blockquote>
<p>Wer lockt, und wo? Wenn der Vector in einer Klasse gekapselt ist muss in dieser Klasse bei Zugriffen gelockt werden. Wenn die aufrufende Klasse lockt bringt das gar nichts.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2221925</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2221925</guid><dc:creator><![CDATA[arghonaut]]></dc:creator><pubDate>Mon, 11 Jun 2012 08:22:30 GMT</pubDate></item><item><title><![CDATA[Reply to sinnvoll &amp;quot;index out of range&amp;quot; debbugen on Mon, 11 Jun 2012 08:35:21 GMT]]></title><description><![CDATA[<p>Wenn also Klasse B auf ein QVector Object namens vec aus KLasse A zugreifen will, dann reicht folgendes nicht:</p>
<p>&quot;QMutexLocker locker(&amp;myMutex);<br />
liest vec aus...<br />
automatisches unlock durch Funktionsende bzw. locker.unlock&quot; ?</p>
<p>Dann würde ich sonst mal den multithreaded kram rückgängig machen, um einen solchen Fehler auszuschließen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2221927</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2221927</guid><dc:creator><![CDATA[Kron]]></dc:creator><pubDate>Mon, 11 Jun 2012 08:35:21 GMT</pubDate></item><item><title><![CDATA[Reply to sinnvoll &amp;quot;index out of range&amp;quot; debbugen on Mon, 11 Jun 2012 08:40:40 GMT]]></title><description><![CDATA[<p>doch, das reicht aus. Es muss nur in Klasse A stehen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2221932</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2221932</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Mon, 11 Jun 2012 08:40:40 GMT</pubDate></item><item><title><![CDATA[Reply to sinnvoll &amp;quot;index out of range&amp;quot; debbugen on Mon, 11 Jun 2012 08:50:50 GMT]]></title><description><![CDATA[<p>Ok, das tut es bei mir nich ;). Und wenn Klasse B nicht wirklich den vec lockt gibts es auch definitiv zugriffsfehler in meinem Programm.</p>
<p>Dann noch eine kurze Verständnisfrage (ist mein erster Multithread Versuch):</p>
<p>Klasse A hat bei mir jetzt ein paar Funktionen und eine Funktion die in einem extra Thread läuft und sich einige QVectoren von Klasse A lockt.</p>
<p>Klasse B hat eine Funtkion die ebenfall die Vectoren von Klasse A locken möchte, dies bisher aber fälschlicher Weise in der eigenen (KLasse <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="B)"
      alt="😎"
    /> Funktion versucht hat.</p>
<p>Reicht es jetzt wenn ich in Klasse A eine Funktion schreibe, die die entsprechenden Vectoren von Klasse A lockt und diese Funktion dann einfach in Klasse B aufrufe?<br />
..zum unlocken dann ggf. noch eine zweite Funktion</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2221935</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2221935</guid><dc:creator><![CDATA[Kron]]></dc:creator><pubDate>Mon, 11 Jun 2012 08:50:50 GMT</pubDate></item><item><title><![CDATA[Reply to sinnvoll &amp;quot;index out of range&amp;quot; debbugen on Mon, 11 Jun 2012 08:57:05 GMT]]></title><description><![CDATA[<p>das sollte reichen <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2221936</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2221936</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Mon, 11 Jun 2012 08:57:05 GMT</pubDate></item><item><title><![CDATA[Reply to sinnvoll &amp;quot;index out of range&amp;quot; debbugen on Mon, 11 Jun 2012 08:59:59 GMT]]></title><description><![CDATA[<p>sehr schön!<br />
Dann euch allen schonmal vielen Dank für die schnelle Hilfe. Brauch jetzt etwas Zeit um das ganze umzusetzen und zu testen. Melde mich dann wieder obs der einzige Fehler war <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/2221939</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2221939</guid><dc:creator><![CDATA[Kron]]></dc:creator><pubDate>Mon, 11 Jun 2012 08:59:59 GMT</pubDate></item><item><title><![CDATA[Reply to sinnvoll &amp;quot;index out of range&amp;quot; debbugen on Mon, 11 Jun 2012 10:07:37 GMT]]></title><description><![CDATA[<p>Eine eigene Funktion zum unlocken würde ich nicht nehmen, das ist fehleranfällig (so wie ein delete auf einen Member durch den Verwender deiner Klasse zu fordern). Regel das über RAII (QMutexLocker):</p>
<pre><code class="language-cpp">class A {
  QMutex vec_mutex;
  QVector&lt;int&gt; vec;
public:
  void machWasMitVec() {
    QMutexLocker locker(&amp;vec_mutex);
    // mach was mit vec
  }
};

class B {
  // private goes here
public:
  void ichFrickelInNemNeuenThread(A&amp; aAusAnderemThread) {
    aAusAnderemThread.machWasMitVec();
  }
};
</code></pre>
<p>Sobald du genötigt bist, vec &quot;aus deiner Obhut zu entlassen&quot;, hast du Probleme. In solchen Fällen IMMER nur Kopien rausrücken!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2221946</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2221946</guid><dc:creator><![CDATA[arghonaut]]></dc:creator><pubDate>Mon, 11 Jun 2012 10:07:37 GMT</pubDate></item><item><title><![CDATA[Reply to sinnvoll &amp;quot;index out of range&amp;quot; debbugen on Mon, 11 Jun 2012 11:44:40 GMT]]></title><description><![CDATA[<p>Also das &quot;index out of Range&quot; Problem trat bisher nicht mehr auf und ich denke das ist jetzt auch gelöst.</p>
<p>@arghonaut: Kopien rausrücken will ich möglichst vermeiden. Da es im eigentlichen Programm doch ein paar mehr Vektoren sein werden und diese jeweils mindestens 20 Mb groß sind. Das mit der Fehleranfälligkeit seh ich aber genauso. Werde mich jetzt mal in RAII einlesen und gucken wie ich das geschickt umsetze.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2221982</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2221982</guid><dc:creator><![CDATA[Kron]]></dc:creator><pubDate>Mon, 11 Jun 2012 11:44:40 GMT</pubDate></item></channel></rss>