<?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[void value not ignored as it should be]]></title><description><![CDATA[<p>Ich kapiere nicht ganz was hier falsch ist. Ich habe eine Klasse die eigentlich gar nichts macht nur zwei Punkte speichert und einen Stack von eben diesem Klassentyp.</p>
<pre><code class="language-cpp">class Position
{
public:
    Position(int inX=0, int inY=0);
    int x;
    int y;
};
</code></pre>
<p>Ich will also den Stack daraufhin prüfen ob er leer ist (ist er aber nicht denn er wird mit push() gefüllt) und bekomme die im Titel genannte Fehlermeldung...</p>
<pre><code class="language-cpp">stack&lt;Position*&gt; st;
Position* pos = 0;

// push the position on the stack and assign label
st.push(new Position(x,y));
labels(x,y) = lab;

while (!(st.empty()))
{
        pos = st.pop();
        int i = pos-&gt;x;
        int j = pos-&gt;y;
}
</code></pre>
<p>Was mache ich denn falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/189083/void-value-not-ignored-as-it-should-be</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 07:23:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/189083.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 08 Aug 2007 11:16:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to void value not ignored as it should be on Wed, 08 Aug 2007 11:16:09 GMT]]></title><description><![CDATA[<p>Ich kapiere nicht ganz was hier falsch ist. Ich habe eine Klasse die eigentlich gar nichts macht nur zwei Punkte speichert und einen Stack von eben diesem Klassentyp.</p>
<pre><code class="language-cpp">class Position
{
public:
    Position(int inX=0, int inY=0);
    int x;
    int y;
};
</code></pre>
<p>Ich will also den Stack daraufhin prüfen ob er leer ist (ist er aber nicht denn er wird mit push() gefüllt) und bekomme die im Titel genannte Fehlermeldung...</p>
<pre><code class="language-cpp">stack&lt;Position*&gt; st;
Position* pos = 0;

// push the position on the stack and assign label
st.push(new Position(x,y));
labels(x,y) = lab;

while (!(st.empty()))
{
        pos = st.pop();
        int i = pos-&gt;x;
        int j = pos-&gt;y;
}
</code></pre>
<p>Was mache ich denn falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1340716</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340716</guid><dc:creator><![CDATA[TheGrudge]]></dc:creator><pubDate>Wed, 08 Aug 2007 11:16:09 GMT</pubDate></item><item><title><![CDATA[Reply to void value not ignored as it should be on Wed, 08 Aug 2007 11:21:56 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p><a href="http://www.cppreference.com/cppstack/pop.html" rel="nofollow">std::stack::pop()</a> hat void als Rückgabewert.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1340722</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340722</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 08 Aug 2007 11:21:56 GMT</pubDate></item><item><title><![CDATA[Reply to void value not ignored as it should be on Wed, 08 Aug 2007 11:23:20 GMT]]></title><description><![CDATA[<p>die Methode pop() loescht nur den obersten Eintrag inm stack und hat Rueckgabewert void. Daher die Fehlermeldung. Zum Lesen des obersten Eintrags dien die Methode top(), richtig waere also:</p>
<pre><code class="language-cpp">stack&lt;Position*&gt; st;
Position* pos = 0;

// push the position on the stack and assign label
st.push(new Position(x,y));
labels(x,y) = lab;

while (!(st.empty()))
{
        pos = st.top();
        int i = pos-&gt;x;
        int j = pos-&gt;y;
        //delete pos waere an dieser stelle evtl angebracht - speicherlecks vermeiden!
        st.pop();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1340723</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340723</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 08 Aug 2007 11:23:20 GMT</pubDate></item><item><title><![CDATA[Reply to void value not ignored as it should be on Wed, 08 Aug 2007 11:24:45 GMT]]></title><description><![CDATA[<p>hehe, auf den krempel bin ich auch mal reingefallen <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="😃"
    /> frag mich, wer auf den bolzen gekommen ist, pop keinen rückgabewert zu verpassen und zusätzlich nen top einzubauen. intuitiv ist das nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1340725</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340725</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Wed, 08 Aug 2007 11:24:45 GMT</pubDate></item><item><title><![CDATA[Reply to void value not ignored as it should be on Wed, 08 Aug 2007 11:27:33 GMT]]></title><description><![CDATA[<p>Ist nicht intuitiv, aber nötig, um das ganze Threadsafe zu machen. Wenn pop den Wert zurückgibt, gibt es KEINE Möglichkeit, das komplett Threadsafe zu realisieren.</p>
<p>Felix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1340729</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340729</guid><dc:creator><![CDATA[Phoemuex]]></dc:creator><pubDate>Wed, 08 Aug 2007 11:27:33 GMT</pubDate></item><item><title><![CDATA[Reply to void value not ignored as it should be on Wed, 08 Aug 2007 11:31:23 GMT]]></title><description><![CDATA[<p>Alles klar nun funktioniert es... das ist echt komisch gelöst denn aus Python und Java kenne ich es anders... aber gut nun weiß ich Bescheid.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1340738</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340738</guid><dc:creator><![CDATA[TheGrudge]]></dc:creator><pubDate>Wed, 08 Aug 2007 11:31:23 GMT</pubDate></item><item><title><![CDATA[Reply to void value not ignored as it should be on Wed, 08 Aug 2007 11:32:29 GMT]]></title><description><![CDATA[<p>Das ermoeglicht ganz einfach mehrfaches Lesen des obersten Wertes durch einfache top() aufrufe, statt den Wert nach jedem pop() wieder zu pushen...</p>
<p>Zur Not kann man sich ja ne eigene pop() routine schreiben:</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
T mypop(std::stack&lt;T&gt; st) {
  T ret = st.top();
  st.pop();
  return ret;
}

int main()
{
std::stack&lt;myClass&gt; st;
//...

myClass mc = mypop(st); //template parameter von mypop muss nicht angegeben werden, wird aus argument hergeleitet.
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1340739</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340739</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 08 Aug 2007 11:32:29 GMT</pubDate></item><item><title><![CDATA[Reply to void value not ignored as it should be on Wed, 08 Aug 2007 11:38:57 GMT]]></title><description><![CDATA[<p>Phoemuex schrieb:</p>
<blockquote>
<p>Ist nicht intuitiv, aber nötig, um das ganze Threadsafe zu machen. Wenn pop den Wert zurückgibt, gibt es KEINE Möglichkeit, das komplett Threadsafe zu realisieren.</p>
<p>Felix</p>
</blockquote>
<p>hmmm ... ist Threadsafe wirklich das Kriterium ? Ich hätte eher an Exceptionsafe gedacht ....</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1340744</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340744</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 08 Aug 2007 11:38:57 GMT</pubDate></item><item><title><![CDATA[Reply to void value not ignored as it should be on Wed, 08 Aug 2007 13:00:46 GMT]]></title><description><![CDATA[<p>Das pop() void als Rückgabewert hat, liegt daran, dass es das Objekt als Kopie zurückgeben muss (weil das eigentliche Objekt zerstört wird). Wenn man nun große Objekte verwaltet und einfach nur das oberste Element löschen will, ohne dieses dann noch weiter zu verwenden, wäre das sehr ineffizient.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1340796</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340796</guid><dc:creator><![CDATA[ipsec]]></dc:creator><pubDate>Wed, 08 Aug 2007 13:00:46 GMT</pubDate></item><item><title><![CDATA[Reply to void value not ignored as it should be on Wed, 08 Aug 2007 13:27:21 GMT]]></title><description><![CDATA[<p>Jetzt habe ich ein neues Problem. Vielleicht sollte ich mal kurz sagen was ich hier eigentlich tue! <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="😉"
    /><br />
Also ich schreibe ein Programm das automatisch rote Augen in einem Bild finden soll und diese auf Wunsch auch automatisch korrigiert.<br />
Dazu nutze ich CImg, um die Pixeloperationen durchzuführen.<br />
Der vorhin gezeigte Ausschnitt aus dem Algorithmus ist der &quot;Connected Components Labeling&quot;-Abschnitt, hier wird das binarisierte Bild in verschiedene Objekte zerlegt.<br />
Bei einem Bild der Größe 800x600 funktioniert das auch alles noch, aber bei größeren Bildern bricht das Programm mit einem &quot;Segmentation Fault&quot; ab. Nun weiß ich nicht warum. Ich denke es liegt am Stack, denn wenn ich nicht mehr auf den Stack pushe dann bricht es auch nicht ab.<br />
Hat ein Stack eine Begrenzung?</p>
<p>Hier mal der Code, der abbricht:</p>
<pre><code class="language-cpp">CImg&lt;imgType&gt; EyeLocatorPriv::labelImage()
{
    CImg&lt;imgType&gt; labels(width,height,1,1);
    labels.fill(0);
    stack&lt;Position*&gt; st;
    Position* pos = 0;
    int lab = 1;

    for (int x=1; x&lt;width-1;x++)
    {
        for (int y=1; y&lt;height-1; y++)
        {
            if (redBinaryMask(x,y) == 0)
                continue;
            if (labels(x,y) &gt; 0)
                continue;
            // push the position on the stack and assign label
            st.push(new Position(x,y));
            labels(x,y) = lab;

            while (!st.empty())
            {
                pos = st.top();
                st.pop();
                int i = pos-&gt;x;
                int j = pos-&gt;y;

                if (redBinaryMask(i-1,j-1) == 255 &amp;&amp; labels(i-1,j-1) == 0)
                {
                    st.push(new Position(i-1,j-1));
                    labels(i-1,j-1) = lab;
                }

                if (redBinaryMask(i-1,j) == 255 &amp;&amp; labels(i-1,j) == 0)
                {
                    st.push(new Position(i-1,j));
                    labels(i-1,j) = lab;
                }

                if (redBinaryMask(i-1,j+1) == 255 &amp;&amp; labels(i-1,j+1) == 0)
                {
                    st.push(new Position(i-1,j+1));
                    labels(i-1,j+1) = lab;
                }

                if (redBinaryMask(i,j-1) == 255 &amp;&amp; labels(i,j-1) == 0)
                {
                    st.push(new Position(i,j-1));
                    labels(i,j-1) = lab;
                }

                if (redBinaryMask(i,j+1) == 255 &amp;&amp; labels(i,j+1) == 0)
                {
                    st.push(new Position(i,j+1));
                    labels(i,j+1) = lab;
                }

                if (redBinaryMask(i+1,j-1) == 255 &amp;&amp; labels(i+1,j-1) == 0)
                {
                    st.push(new Position(i+1,j-1));
                    labels(i+1,j-1) = lab;
                }

                if (redBinaryMask(i+1,j) == 255 &amp;&amp; labels(i+1,j) == 0)
                {
                    st.push(new Position(i+1,j));
                    labels(i+1,j) = lab;
                }

                if (redBinaryMask(i+1,j+1) == 255 &amp;&amp; labels(i+1,j+1) == 0)
                {
                    st.push(new Position(i+1,j+1));
                    labels(i+1,j+1) = lab;
                }
            } // end while
            lab++;
        }
    }
    components = lab;
    return labels;
}
</code></pre>
<p>Was kann denn das sein? Läuft der Stack einfach voll? Das wäre aber doof weil normalerweise sind meine digitalen Fotos alle so 3008x2272px groß...<br />
Jemand eine Idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1340813</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340813</guid><dc:creator><![CDATA[TheGrudge]]></dc:creator><pubDate>Wed, 08 Aug 2007 13:27:21 GMT</pubDate></item><item><title><![CDATA[Reply to void value not ignored as it should be on Wed, 08 Aug 2007 14:54:03 GMT]]></title><description><![CDATA[<p>Laut einem meiner Bücher soll man in STL-Containern keine Zeiger, sondern normale Objekte abspeichern, da die Container intern Objekte verschieben, kopieren, usw. und es deswegen zu Fehlern kommen kann. Probier doch mal den Algorithmus mit stack&lt;Position&gt; (ohne Zeiger). Vielleicht löst das dein Problem. Außerdem ersparst du dir dann das explizite Freigeben der Zeiger.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1340891</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340891</guid><dc:creator><![CDATA[ipsec]]></dc:creator><pubDate>Wed, 08 Aug 2007 14:54:03 GMT</pubDate></item><item><title><![CDATA[Reply to void value not ignored as it should be on Wed, 08 Aug 2007 14:59:54 GMT]]></title><description><![CDATA[<p>XMaster schrieb:</p>
<blockquote>
<p>Laut einem meiner Bücher soll man in STL-Containern keine Zeiger, sondern normale Objekte abspeichern, da die Container intern Objekte verschieben, kopieren, usw. und es deswegen zu Fehlern kommen kann.</p>
</blockquote>
<p>Das wundert mich nu ein wenig. Wenn man Container mit Zeigern benutzt, werdne ja nur die Zeiger verschoben udn kopiert, was eigentlich kein Problem sein sollte. Die Objekte die dahinter stecken, bleiben ja unberuehrt.<br />
Ausserdem, wenn Container mit Zeigern pfui sind, wie soll man dann folgendes behandeln:<br />
- Sammlungen von abgeleiteten Objekten der selben Basisklasse (Stichwort Polymorphie)<br />
- Sammlungen von nicht-kopierbaren Objekten</p>
<p>In beiden Faellen erscheinen mir Container mit Zeigern als die natuerliche Loesung, vorausgesetzt man schafft keine Speicherlecks...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1340900</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340900</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 08 Aug 2007 14:59:54 GMT</pubDate></item><item><title><![CDATA[Reply to void value not ignored as it should be on Wed, 08 Aug 2007 15:38:14 GMT]]></title><description><![CDATA[<p>XMaster schrieb:</p>
<blockquote>
<p>Laut einem meiner Bücher soll man in STL-Containern keine Zeiger, sondern normale Objekte abspeichern, ...</p>
</blockquote>
<p>Das hast Du vermutlich mißverstanden. Ich denke mal, dass dort geraten wird, &quot;... keine <em>Zeiger auf Objekte im Container</em> anzulegen ...&quot;<br />
Das hat im Deutschen eine fiese Doppeldeutigkeit: Ich klammere mal:<br />
&quot;... keine (Zeiger auf Objekte) im Container anzulegen ...&quot; (= etwas im Container ablegen)<br />
&quot;... keine Zeiger auf (Objekte im Container) anzulegen ...&quot; (= Zeiger auf etwas anzulegen)</p>
<p>Vergleich:<br />
A) &quot;... (Zeiger auf Objekte) im Container ...&quot;</p>
<pre><code class="language-cpp">vector&lt;myType*&gt; vec(2); // Vector von Zeigern auf myType

                        // x     &amp;x       vec[1]   &amp;vec[1]
                        // --------------------------------
myType x('S');          // 'S'   0x1234   0x0000   0xaffe   
vec[1] = &amp;x;            // 'S'   0x1234   0x1234   0xaffe   
vec.resize(2000);       // 'S'   0x1234   0x1234   0xdead

// =&gt; selbst wenn die Zeiger in vec verlagert werden, behalten sie doch dieselben Wert
// =&gt; sie zeigen weiterhin dahin, wo sie sollen
// =&gt; OK
</code></pre>
<p><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="😎"
    /> &quot;... Zeiger auf (Objekte im Container) ...&quot;</p>
<pre><code class="language-cpp">vector&lt;myType&gt; vec(2);  // Vector von myType-Objekten

                        // x     &amp;x       vec[1]   &amp;vec[1]   p
                        // -------------------------------------
myType x('S');          // 'S'   0x1234   0        0xaffe    -
vec[1] =  x;            // 'S'   0x1234   'S'      0xaffe    -
myType* p = &amp;vec[1];    // 'S'   0x1234   'S'      0xaffe    0xaffe
vec.resize(2000);       // 'S'   0x1234   'S'      0xdead    0xaffe

// =&gt; Nach der Verlagerung hat zwar vec[1] noch denselben Wert (Kopiert von x) aber eine andere Adresse
// =&gt; p zeigt weiterhin auf 0xaffe, aber vec[1] liegt inzwischen auf 0xdead
// =&gt; DANGER !!!
</code></pre>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1340912</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340912</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 08 Aug 2007 15:38:14 GMT</pubDate></item><item><title><![CDATA[Reply to void value not ignored as it should be on Wed, 08 Aug 2007 15:14:43 GMT]]></title><description><![CDATA[<p>XMaster schrieb:</p>
<blockquote>
<p>Laut einem meiner Bücher soll man in STL-Containern keine Zeiger, sondern normale Objekte abspeichern, da die Container intern Objekte verschieben, kopieren, usw. und es deswegen zu Fehlern kommen kann. Probier doch mal den Algorithmus mit stack&lt;Position&gt; (ohne Zeiger). Vielleicht löst das dein Problem. Außerdem ersparst du dir dann das explizite Freigeben der Zeiger.</p>
</blockquote>
<p>Mal abgesehen von der expliziten Freigabe ist diese Aussage humbug (in welchem Buch steht die?). Container von Zeigern sind aus den von pumuckl genannten Gründen durchaus gängig.</p>
<p>Eine Alternative wären die pointer container in boost, welche sich selbst um die Freigabe der Zeiger kümmern, oder das speichern von boost smart pointern in einem Standardcontainer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1340916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340916</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 08 Aug 2007 15:14:43 GMT</pubDate></item><item><title><![CDATA[Reply to void value not ignored as it should be on Wed, 08 Aug 2007 15:29:22 GMT]]></title><description><![CDATA[<p>Wenn ich keine Zeiger nutze, kann ich doch auch keine Objekte dynamisch anlegen (das muss ich aber)...<br />
Meint ihr ich sollte mal boost installieren und die dortigen Container einsetzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1340928</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340928</guid><dc:creator><![CDATA[TheGrudge]]></dc:creator><pubDate>Wed, 08 Aug 2007 15:29:22 GMT</pubDate></item><item><title><![CDATA[Reply to void value not ignored as it should be on Wed, 08 Aug 2007 15:41:39 GMT]]></title><description><![CDATA[<p>TheGrudge schrieb:</p>
<blockquote>
<p>Wenn ich keine Zeiger nutze,...</p>
</blockquote>
<p>Lies nochmal !<br />
Deine Prämisse bezieht sich hier auf eine These, der schon massiv widersprochen wurde.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1340936</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340936</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 08 Aug 2007 15:41:39 GMT</pubDate></item><item><title><![CDATA[Reply to void value not ignored as it should be on Wed, 08 Aug 2007 15:42:34 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>Phoemuex schrieb:</p>
<blockquote>
<p>Ist nicht intuitiv, aber nötig, um das ganze Threadsafe zu machen. Wenn pop den Wert zurückgibt, gibt es KEINE Möglichkeit, das komplett Threadsafe zu realisieren.</p>
<p>Felix</p>
</blockquote>
<p>hmmm ... ist Threadsafe wirklich das Kriterium ? Ich hätte eher an Exceptionsafe gedacht ....</p>
<p>Gruß,</p>
<p>Simon2.</p>
</blockquote>
<p>Du hast natürlich recht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> Gut, wenn man immer jemanden hat, der einen korrigiert <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="😃"
    /></p>
<p>Felix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1340937</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340937</guid><dc:creator><![CDATA[Phoemuex]]></dc:creator><pubDate>Wed, 08 Aug 2007 15:42:34 GMT</pubDate></item><item><title><![CDATA[Reply to void value not ignored as it should be on Wed, 08 Aug 2007 15:43:33 GMT]]></title><description><![CDATA[<p>Ja schon klar das dies wohl nix damit zu tun hat, ich wollte ja nur erklären warum ich Zeiger nutze. Trotzdem löst das nicht mein Problem, ich verstehe einfach nicht wieso ich einen Segmentation Fault bekomme.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1340939</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340939</guid><dc:creator><![CDATA[TheGrudge]]></dc:creator><pubDate>Wed, 08 Aug 2007 15:43:33 GMT</pubDate></item><item><title><![CDATA[Reply to void value not ignored as it should be on Wed, 08 Aug 2007 15:48:53 GMT]]></title><description><![CDATA[<p>Phoemuex schrieb:</p>
<blockquote>
<p>...<br />
Du hast natürlich recht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> Gut, wenn man immer jemanden hat, der einen korrigiert <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="😃"
    /></p>
<p>Felix</p>
</blockquote>
<p>Gut ! Ich hatte schon einen Knoten im Gehirn, weil ich dachte, ich wäre zu blöd.</p>
<p>Danke für die Rückmeldung, <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1340942</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340942</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 08 Aug 2007 15:48:53 GMT</pubDate></item><item><title><![CDATA[Reply to void value not ignored as it should be on Thu, 09 Aug 2007 13:55:05 GMT]]></title><description><![CDATA[<p>Ok ich habe nun raus gefunden, das es wohl nicht an der Bildergröße liegt (also kein Speicherüberlauf), denn es gehen auch manche Bilder nicht, die nur 300x240px groß sind (oder andere Dimensionen).<br />
Was kann denn das verursachen? Irgendwie ist die Fehlermeldung &quot;Segmentation Fault&quot; wirklich nicht sehr aussagekräftig... Wie könnte ich denn das debuggen? Ich komme normal von Python her und ich weiß nun nicht wie ich da rangehen soll... bei Python bekommt man eigentlich immer aussagekräftige Exceptions.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1341565</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1341565</guid><dc:creator><![CDATA[TheGrudge]]></dc:creator><pubDate>Thu, 09 Aug 2007 13:55:05 GMT</pubDate></item><item><title><![CDATA[Reply to void value not ignored as it should be on Thu, 09 Aug 2007 15:12:37 GMT]]></title><description><![CDATA[<p>OK ich habe mittlerweile mit GDB raus gefunden, das es wohl Zugriffsprobleme gibt bei manchen Bildern, warum weiß ich aber nicht.<br />
Nun habe ich mal Valgrind installiert, aber ich habe nicht wirklich den Plan was ich damit machen kann.<br />
Immerhin startet nun das Programm wenn es mit valgrind aufgerufen wird, aber das ist ja keine Lösung <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>Hier mal die Ausgabe: <a href="http://rafb.net/p/MH74yY52.html" rel="nofollow">http://rafb.net/p/MH74yY52.html</a></p>
<p>Ich hoffe ihr könnt damit was anfangen, wie gesagt ich bin Python verwöhnt und dort gibt es ja Garbage Collectors, vielleicht ist das ja mein Problem...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1341647</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1341647</guid><dc:creator><![CDATA[TheGrudge]]></dc:creator><pubDate>Thu, 09 Aug 2007 15:12:37 GMT</pubDate></item><item><title><![CDATA[Reply to void value not ignored as it should be on Thu, 09 Aug 2007 15:59:39 GMT]]></title><description><![CDATA[<p>OK ich habe noch einmal GDB benutzt und ich glaube ich weiß was passiert, ich greife wohl auf Indizes zu, die es nicht gibt.<br />
Ich verstehe nur nicht wieso es passiert, denn es klappt bei manchen Bildern.</p>
<p>Vielleicht findet ihr den Fehler... aber nichts desto trotz scheint valgrind mir massive Speicherprobleme zu zeigen, die ich wohl durch schlechte Pointerverwaltung hin bekomme <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>Ich poste nochmal den Code der diese Probleme verursacht:</p>
<pre><code class="language-cpp">CImg&lt;imgType&gt; EyeLocatorPriv::labelImage()
{
    CImg&lt;imgType&gt; labels(width,height,1,1);
    labels.fill(0);
    stack&lt;Position*&gt; st;
    Position* pos = 0;
    int lab = 1;
    labelValues.clear();

    for (int y=1; y&lt;height-1; y++)
    {
        for (int x=1; x&lt;width-1;x++)
        {
            if (redBinaryMask(x,y) == 0)
                continue;
            if (labels(x,y) &gt; 0)
                continue;
            // push the position on the stack and assign label
            st.push(new Position(x,y));
            labels(x,y) = lab;
            setLabelValue(lab);

            while (!st.empty())
            {
                pos = st.top();
                st.pop();
                int i = pos-&gt;x;
                int j = pos-&gt;y;

                if ((redBinaryMask(i-1,j-1) == 255) &amp;&amp; (labels(i-1,j-1) == 0))
                {
                    st.push(new Position(i-1,j-1));
                    labels(i-1,j-1) = lab;
                    setLabelValue(lab);
                }

                if ((redBinaryMask(i-1,j) == 255) &amp;&amp; (labels(i-1,j) == 0))
                {
                    st.push(new Position(i-1,j));
                    labels(i-1,j) = lab;
                    setLabelValue(lab);
                }

                if ((redBinaryMask(i-1,j+1) == 255) &amp;&amp; (labels(i-1,j+1) == 0))
                {
                    st.push(new Position(i-1,j+1));
                    labels(i-1,j+1) = lab;
                    setLabelValue(lab);
                }

                if ((redBinaryMask(i,j-1) == 255) &amp;&amp; (labels(i,j-1) == 0))
                {
                    st.push(new Position(i,j-1));
                    labels(i,j-1) = lab;
                    setLabelValue(lab);
                }

                if ((redBinaryMask(i,j+1) == 255) &amp;&amp; (labels(i,j+1) == 0))
                {
                    st.push(new Position(i,j+1));
                    labels(i,j+1) = lab;
                    setLabelValue(lab);
                }

                if ((redBinaryMask(i+1,j-1) == 255) &amp;&amp; (labels(i+1,j-1) == 0))
                {
                    st.push(new Position(i+1,j-1));
                    labels(i+1,j-1) = lab;
                    setLabelValue(lab);
                }

                if ((redBinaryMask(i+1,j) == 255) &amp;&amp; (labels(i+1,j) == 0))
                {
                    st.push(new Position(i+1,j));
                    labels(i+1,j) = lab;
                    setLabelValue(lab);
                }

                if ((redBinaryMask(i+1,j+1) == 255) &amp;&amp; (labels(i+1,j+1) == 0))
                {
                    st.push(new Position(i+1,j+1));
                    labels(i+1,j+1) = lab;
                    setLabelValue(lab);
                }
            } // end while
            lab++;
        }
    }

    // remove components with less than 25 pixels
    for (map&lt;int,int&gt;::iterator it = labelValues.begin(); it != labelValues.end();)
    {
        if (it-&gt;second &lt;= 25)
            labelValues.erase(it++);
        else
            ++it;
    }

    // update labels
    cimg_forXY(labels,x,y)
    {
        if (labelValues.find(labels(x,y)) == labelValues.end())
            labels(x,y) = 0;
    }
    return labels;
}
</code></pre>
<p>Irgendwas scheint wohl schief zu laufen beim pushen auf den Stack, denn die for-Schleifen können definitiv nicht über das Ziel hinaus schießen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1341714</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1341714</guid><dc:creator><![CDATA[TheGrudge]]></dc:creator><pubDate>Thu, 09 Aug 2007 15:59:39 GMT</pubDate></item></channel></rss>