<?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[Frage zu einem Programmabsturz]]></title><description><![CDATA[<p>Also erst mal .... Das ist mein Programm ...<br />
Hab alle Sachen ,die der Debugger gemeldet hat aus der Welt geschafft und es dann compiliert . Das Ergebnis davon ist ,dass ich ein Proramm geschaffen hab ,das - ganz toller Weise - nur abstürzen kann.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;cstdlib&gt;
#include &lt;cstdio&gt;

using namespace std;

int IDN = 0;

int Zufallszahl (unsigned int max = 100, 
                 unsigned int start = 0 )
{    
    srand( time(NULL) );
    int zahl;          
        zahl = (rand()% max )+ start;  
    return zahl;
}

class pwsegment
{
public:
    pwsegment()
    {
    IDNo = IDN++;
     IDN = IDNo;
     int stelle;
         for (stelle = 0 ;stelle &lt; 136 ;stelle ++)
                  {
                  int stelles;
                  Segment[stelles] = Zufallszahl (1000 , 100);
                  stellecs++;
                  }
    }

    int IDNo; 
    int Segment[136];
};

int main (int argc, char *argv[])
{
    pwsegment a;
    int i;
    for (i = 0 ; i &lt; 136 ;i++ )
    {
        int stelleaus;
        cout &lt;&lt; a.Segment[stelleaus]&lt;&lt; endl;
        stelleaus++;
     } 
   system (&quot;PAUSE&quot;);
  return 0;
}
</code></pre>
<p>**Jetzt zu meinen Fragen . Liegt das erstens an meinem PC?<br />
Oder hab ich irgendwas grundlegendes falsch gemacht ,was ein Debugger nicht erkennt ? Oder is das Programm einfach nur Müll?</p>
<p>PS : Das Programm soll einem Array (Segment) in einem Objekt 136 Zahlen zuweisen und danach soll das alles ausgegeben werden . Nebenbei soll dem Objekt eine ID zugewiesen werden ....(aber das is nicht so wichtig)**</p>
<p>Danke für eure Hilfe <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>
]]></description><link>https://www.c-plusplus.net/forum/topic/169017/frage-zu-einem-programmabsturz</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 15:05:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/169017.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 31 Dec 2006 14:26:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu einem Programmabsturz on Mon, 08 Jan 2007 14:41:49 GMT]]></title><description><![CDATA[<p>Also erst mal .... Das ist mein Programm ...<br />
Hab alle Sachen ,die der Debugger gemeldet hat aus der Welt geschafft und es dann compiliert . Das Ergebnis davon ist ,dass ich ein Proramm geschaffen hab ,das - ganz toller Weise - nur abstürzen kann.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;cstdlib&gt;
#include &lt;cstdio&gt;

using namespace std;

int IDN = 0;

int Zufallszahl (unsigned int max = 100, 
                 unsigned int start = 0 )
{    
    srand( time(NULL) );
    int zahl;          
        zahl = (rand()% max )+ start;  
    return zahl;
}

class pwsegment
{
public:
    pwsegment()
    {
    IDNo = IDN++;
     IDN = IDNo;
     int stelle;
         for (stelle = 0 ;stelle &lt; 136 ;stelle ++)
                  {
                  int stelles;
                  Segment[stelles] = Zufallszahl (1000 , 100);
                  stellecs++;
                  }
    }

    int IDNo; 
    int Segment[136];
};

int main (int argc, char *argv[])
{
    pwsegment a;
    int i;
    for (i = 0 ; i &lt; 136 ;i++ )
    {
        int stelleaus;
        cout &lt;&lt; a.Segment[stelleaus]&lt;&lt; endl;
        stelleaus++;
     } 
   system (&quot;PAUSE&quot;);
  return 0;
}
</code></pre>
<p>**Jetzt zu meinen Fragen . Liegt das erstens an meinem PC?<br />
Oder hab ich irgendwas grundlegendes falsch gemacht ,was ein Debugger nicht erkennt ? Oder is das Programm einfach nur Müll?</p>
<p>PS : Das Programm soll einem Array (Segment) in einem Objekt 136 Zahlen zuweisen und danach soll das alles ausgegeben werden . Nebenbei soll dem Objekt eine ID zugewiesen werden ....(aber das is nicht so wichtig)**</p>
<p>Danke für eure Hilfe <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1200316</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1200316</guid><dc:creator><![CDATA[*gt**gt*sam2005*lt**lt*]]></dc:creator><pubDate>Mon, 08 Jan 2007 14:41:49 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu einem Programmabsturz on Sun, 31 Dec 2006 14:32:23 GMT]]></title><description><![CDATA[<blockquote>
<blockquote>
<p>sam2005&lt;&lt; schrieb:<br />
<strong>Oder is das Programm einfach nur Müll?</strong></p>
</blockquote>
</blockquote>
<p>[X]</p>
<p>Schau doch wenigstens mal die Compilerwarnungen an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1200318</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1200318</guid><dc:creator><![CDATA[Kenner der Deppen]]></dc:creator><pubDate>Sun, 31 Dec 2006 14:32:23 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu einem Programmabsturz on Sun, 31 Dec 2006 14:33:07 GMT]]></title><description><![CDATA[<p>Ganz klar, du hast nen Hardwareschaden!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1200319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1200319</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Sun, 31 Dec 2006 14:33:07 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu einem Programmabsturz on Sun, 31 Dec 2006 14:36:20 GMT]]></title><description><![CDATA[<p>a) Du hast anscheined zuerst den Debugger, dann erst den Compiler verwendet ==&gt; Du weisst gar nicht was die Beiden machen.<br />
b) Ein Debugger erkennt gar nix, er zeigt dir nur Sachen an, und du kannst dann erkennen was nicht funktioniert.<br />
c) Wie schon gesagt gibt die Compiler sicher einige Warnungen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1200322</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1200322</guid><dc:creator><![CDATA[Heiliger Nikolaus]]></dc:creator><pubDate>Sun, 31 Dec 2006 14:36:20 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu einem Programmabsturz on Sun, 31 Dec 2006 14:49:01 GMT]]></title><description><![CDATA[<p>DAS Programm lässt sich kompilieren <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>Naja, los gehts:</p>
<pre><code class="language-cpp">int Zufallszahl (unsigned int max = 100, 
                 unsigned int start = 0 )
{    
    srand( time(NULL) );
    int zahl;          
        zahl = (rand()% max )+ start;  
    return zahl;
}
</code></pre>
<p>Tu das</p>
<pre><code class="language-cpp">srand( time(NULL) );
</code></pre>
<p>da raus, das sollte nur einmal pro Durchlauf des GANZEN PROGRAMMS aufgerufen werden, also in main() oder so...</p>
<pre><code class="language-cpp">int stelle;
         for (stelle = 0 ;stelle &lt; 136 ;stelle ++)
                  {
                  int stelles;
                  Segment[stelles] = Zufallszahl (1000 , 100);
                  stellecs++;
                  }
    }
</code></pre>
<p>das</p>
<pre><code class="language-cpp">int stelles;
</code></pre>
<p>kann weg, wozu wird das denn gebraucht?</p>
<p>Dadurch stürtzt dein Programm nämlich auch ab:</p>
<pre><code class="language-cpp">int stelles;
</code></pre>
<p>deklariert und definiert eine Variable, die du <strong>uninitialisiert</strong> verwendest, um das Array Segments[] zu indizieren. D.h. wenn stelles zufälligerweise größer ist also 135 schmiert dein Programm ab.</p>
<p>Die Zeile</p>
<pre><code class="language-cpp">stellecs++;
</code></pre>
<p>ist übrigens der Grund, aus dem sich das Programm (eigentlich) gar nicht kompilieren lassen dürfte, stelle<strong>c</strong>s gibt es ja gar nicht, sondern nur stelles...</p>
<pre><code class="language-cpp">Segment[stelles] = Zufallszahl (1000 , 100);
</code></pre>
<p>muss dann natürlich</p>
<pre><code class="language-cpp">Segment[stelle] = Zufallszahl (1000 , 100);
</code></pre>
<p>heißen.</p>
<p>Der ganze Block nochmal neu:</p>
<pre><code class="language-cpp">for(int stelle = 0; stelle &lt; 136; ++stelle)
{
    Segment[stelle] = Zufallszahl (1000 , 100);
}
</code></pre>
<p>Das hier</p>
<pre><code class="language-cpp">pwsegment()
    {
    IDNo = IDN++;
     IDN = IDNo;
</code></pre>
<p>verstehe ich nicht ganz. Wieso erhöhst du IDN (was ja eigentlich sinnvoll ist), weist dann aber IDN wieder IDNo zu, also die unerhöhte Kopie? Ich würde IDN = IDNo einfach weglassen, wenn ich verstanden habe, was du machen willst.</p>
<p>Hier</p>
<pre><code class="language-cpp">int i;
    for (i = 0 ; i &lt; 136 ;i++ )
    {
        int stelleaus;
        cout &lt;&lt; a.Segment[stelleaus]&lt;&lt; endl;
        stelleaus++;
     }
</code></pre>
<p>Hast du fast das gleiche Problem wie oben auch, du musst i benutzen, um das Array zu indizieren und nicht stelleaus, das wieder eine <strong>uninitialisierte</strong> Variable ist. Das</p>
<pre><code class="language-cpp">stelleaus++;
</code></pre>
<p>bewirkt auch nichts, da stelleaus beim nächsten Schleifendurchlauf sowieso wieder (mit einem zufälligen Wert) neu erzeugt wird.</p>
<p>Hoffe, ich konnte helfen.</p>
<p>Felix :xmas2:</p>
<p>EDIT: Das mit dem Unterschied zwischen einem Debugger und einem Compiler stimmt allerdings...</p>
<p>Die Einrückung des Codes würde ich übrigens auch nochmal überdenken (ist zwar besser als gar nicht eingerückt, aber trotzdem) und der Knopf C/C++ ist besser für C/C++ Code geeignet als einfach der Code Button.</p>
<p>Die (unregistrierten) Trolle da würde ich übrigens nicht sosehr beachten, jeder fängt mal an <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/1200329</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1200329</guid><dc:creator><![CDATA[Phoemuex]]></dc:creator><pubDate>Sun, 31 Dec 2006 14:49:01 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu einem Programmabsturz on Sun, 31 Dec 2006 15:07:09 GMT]]></title><description><![CDATA[<p>Yo vielen Dank hat mir auf jeden Fall geholfen ....<br />
wollt nur mal fragen ob du bei Gelegenheit erklären könntest ,was der Vorteil davon ist zuerst zu inkrementieren !<br />
Aber THX</p>
<p>PS.<br />
IDNo = IDN++;<br />
IDN = IDNo; // &lt;- das lag daran ,dass ich da vorher nen zeiger hatte und das schnell geändert hab.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1200357</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1200357</guid><dc:creator><![CDATA[*gt**gt*sam2005*lt**lt*]]></dc:creator><pubDate>Sun, 31 Dec 2006 15:07:09 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu einem Programmabsturz on Sun, 31 Dec 2006 15:34:44 GMT]]></title><description><![CDATA[<p>Die Zuweisung ist unnötig.</p>
<pre><code class="language-cpp">IDNo = IDN++;
</code></pre>
<p>Denn schon das erhöht die Variable</p>
<pre><code class="language-cpp">IDN++;
</code></pre>
<p>PreIncreament ist schneller, da es keine Kopie erstellen muss,<br />
allerdings optimieren Compiler das afaik i. d. Regel weg</p>
<p>Dazu gibt glaub ich nen Beitrag in den FAQ</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1200372</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1200372</guid><dc:creator><![CDATA[PreIncreament]]></dc:creator><pubDate>Sun, 31 Dec 2006 15:34:44 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu einem Programmabsturz on Sun, 31 Dec 2006 15:37:39 GMT]]></title><description><![CDATA[<p>bei primitiven typen optimieren das fast alle compiler weg, wenn möglich. nur bei selbst definierten typen nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1200376</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1200376</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Sun, 31 Dec 2006 15:37:39 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu einem Programmabsturz on Sun, 31 Dec 2006 15:40:32 GMT]]></title><description><![CDATA[<p>Jetzt mal ne andere Frage:</p>
<p>Kann ich eigentlich keinen Postincreament machen, wenn der Copy-Konstruktor<br />
nicht erreichbar ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1200379</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1200379</guid><dc:creator><![CDATA[PreIncreament]]></dc:creator><pubDate>Sun, 31 Dec 2006 15:40:32 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu einem Programmabsturz on Mon, 01 Jan 2007 04:44:02 GMT]]></title><description><![CDATA[<p>*push*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1200539</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1200539</guid><dc:creator><![CDATA[*push*]]></dc:creator><pubDate>Mon, 01 Jan 2007 04:44:02 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu einem Programmabsturz on Mon, 01 Jan 2007 05:17:29 GMT]]></title><description><![CDATA[<p>PreIncreament schrieb:</p>
<blockquote>
<p>Jetzt mal ne andere Frage:</p>
<p>Kann ich eigentlich keinen Postincreament machen, wenn der Copy-Konstruktor<br />
nicht erreichbar ist?</p>
</blockquote>
<ol>
<li>
<p>Bei eingebauten Typen stellt sich die Frage nicht, da alle Operatoren public sind.</p>
</li>
<li>
<p>Der Postincrement Operator muss als Returnwert ja nicht eine Instanz der Klasse haben, der kann ja irgendwas zurückgeben. Wenn der Postincrement Operator nun z.B. void zurückliefert stellt sich die Frage auch nicht, da keine Beziehung zum Copy-Ctor mehr besteht.</p>
</li>
<li>
<p>Der MSVC (mit &quot;language extension&quot; AUSgeschaltet natürlich) erlaubt in dem Fall zumindest den Aufruf des Postincrement Operators, aber nicht die Initialisierung eines anderen Objektes mit dem Returnwert. Ist auch irgendwie logisch, wenn man den Returnwert bloss verwirft muss ja nirgends der Copy-Ctor von ausserhalb der Klasse aufgerufen werden. Von daher schätze ich dass es auch laut Standard OK sein wird.</p>
</li>
</ol>
<pre><code class="language-cpp">class A
{
public:
    A()
    {
    }

private:
    A(A const&amp;)
    {
    }

public:
    A operator ++ (int)
    {
        return *this;
    }

    A foo()
    {
        return *this;
    }
};

int main()
{
    A a;
    a++;            // OK
    a.foo();        // OK
//  A a2 = a++;     // Fehler
//  A a3 = a.foo(); // Fehler
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1200540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1200540</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 01 Jan 2007 05:17:29 GMT</pubDate></item></channel></rss>