<?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[Pufferüberlauf &#x2F; Stack around the variable &#x27;x&#x27; is corrupted]]></title><description><![CDATA[<p>Hi<br />
Der Titel sagts schon aus, hab erst vor nen paar Wochen mit C++ angefangen und habe nun ein kleines Programm geschrieben, das mithilfe von Int-Arrays aus 1-en und 0-en Zahlen und andere pixelartige Bilder ausgeben kann. Leider tritt beim Beenden des Programmes diese beiden Fehler im Titel auf. Ich habe keine Ahnung, was mir da für ein Fehler unterlaufen ist, und deswegen suche ich hier Hilfe. Wäre echt nett, wenn mir hier jemand helfen könnte und generelle Verbesserungsvorschläge zur Disskussion bringen könnte, man muss das ja net alles lesen, überfliegen sollte (für euch) 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="🙂"
    /><br />
renderscreen.h:<br />
#include &lt;iostream&gt;<br />
#include &lt;time.h&gt;</p>
<pre><code>class renderscreen
{
public:
renderscreen();

void sleep(unsigned int mseconds);
void createRectangle(int posX, int posY, int height, int width);
void createNumber(int number);
void printOut();
void clear();
void countDown();

private:
int renderScreen[40][30]; //width(&quot;Breite&quot;) = 800, umgekehrt, weil [0][0] bei Initialisation jeweils +1
};
</code></pre>
<pre><code>renderscreen.cpp:
#include &quot;renderscreen.h&quot;

renderscreen::renderscreen()
{
	std::cout &lt;&lt; &quot;Screen is in rendering-mode&quot; &lt;&lt; std::endl;
for(int y = 40; y &gt; 0;)
{
   for(int x = 30; x &gt; 0;)
   {
   renderScreen[y][x] = 0;
   x--;
   }
y--;
}

}

void renderscreen::createRectangle(int posX, int posY, int height, int width)
{

renderScreen[posY][posX] = 1; 

int widthA = width;

while(height &gt; 0)
{

   while(width &gt; 0)
   {
   renderScreen[height + (posY -1)][width + (posX - 1)] = 1;
   width--;
   }
width = widthA;
height--;
}

}

void renderscreen::printOut()
{
for(int y = 1; y &lt; 40;)
{
   for(int x = 1; x &lt; 30;)
   {
   std::cout &lt;&lt; renderScreen[y][x] &lt;&lt; &quot; &quot;;
   x++;
   }
std::cout &lt;&lt; &quot;&quot; &lt;&lt; std::endl;
y++;
}
}

void renderscreen::clear()
{
memset(renderScreen, 0, sizeof(renderScreen));
}

void renderscreen::createNumber(int number)
{
if(number == 0)
{
this-&gt;renderscreen::createRectangle(3, 6, 11, 4);  //Top-left               /*11, 4 ---&gt; 3 = 2 über Oberkante (inkl. 0, die nicht ausgegeben wird) */
this-&gt;renderscreen::createRectangle(3, 23, 11, 4); //Down-left
this-&gt;renderscreen::createRectangle(9, 36, 4, 11); //Down-middle
this-&gt;renderscreen::createRectangle(22, 6, 11, 4); //Top-right
this-&gt;renderscreen::createRectangle(22, 23, 11, 4); //Down-right
this-&gt;renderscreen::createRectangle(9, 1, 4, 11); //Top-middle

} 

if(number == 1)
{
this-&gt;renderscreen::createRectangle(22, 6, 11, 4); //Top-right
this-&gt;renderscreen::createRectangle(22, 23, 11, 4); //Down-right
} 

if(number == 2)
{

this-&gt;renderscreen::createRectangle(3, 23, 11, 4); //Down-left
this-&gt;renderscreen::createRectangle(9, 36, 4, 11); //Down-middle
this-&gt;renderscreen::createRectangle(22, 6, 11, 4); //Top-right
this-&gt;renderscreen::createRectangle(9, 1, 4, 11); //Top-middle
this-&gt;renderscreen::createRectangle(9, 18, 4, 11); //Middle-middle
} 

if(number == 3)
{
this-&gt;renderscreen::createRectangle(9, 36, 4, 11); //Down-middle
this-&gt;renderscreen::createRectangle(22, 6, 11, 4); //Top-right
this-&gt;renderscreen::createRectangle(22, 23, 11, 4); //Down-right
this-&gt;renderscreen::createRectangle(9, 1, 4, 11); //Top-middle
this-&gt;renderscreen::createRectangle(9, 18, 4, 11); //Middle-middle
} 

if(number == 4)
{
this-&gt;renderscreen::createRectangle(3, 6, 11, 4);  //Top-left           
this-&gt;renderscreen::createRectangle(22, 6, 11, 4); //Top-right
this-&gt;renderscreen::createRectangle(22, 23, 11, 4); //Down-right
this-&gt;renderscreen::createRectangle(9, 18, 4, 11); //Middle-middle
} 

if(number == 5)
{
this-&gt;renderscreen::createRectangle(3, 6, 11, 4);  //Top-left              
this-&gt;renderscreen::createRectangle(9, 36, 4, 11); //Down-middle
this-&gt;renderscreen::createRectangle(22, 23, 11, 4); //Down-right
this-&gt;renderscreen::createRectangle(9, 1, 4, 11); //Top-middle
this-&gt;renderscreen::createRectangle(9, 18, 4, 11); //Middle-middle
} 

if(number == 6)
{
this-&gt;renderscreen::createRectangle(3, 6, 11, 4);  //Top-left               
this-&gt;renderscreen::createRectangle(3, 23, 11, 4); //Down-left
this-&gt;renderscreen::createRectangle(9, 36, 4, 11); //Down-middle
this-&gt;renderscreen::createRectangle(22, 23, 11, 4); //Down-right
this-&gt;renderscreen::createRectangle(9, 1, 4, 11); //Top-middle
this-&gt;renderscreen::createRectangle(9, 18, 4, 11); //Middle-middle
}

if(number == 7)
{
this-&gt;renderscreen::createRectangle(22, 6, 11, 4); //Top-right
this-&gt;renderscreen::createRectangle(22, 23, 11, 4); //Down-right
this-&gt;renderscreen::createRectangle(9, 1, 4, 11); //Top-middle
}

if(number == 8)
{
this-&gt;renderscreen::createRectangle(3, 6, 11, 4);  //Top-left              
this-&gt;renderscreen::createRectangle(3, 23, 11, 4); //Down-left
this-&gt;renderscreen::createRectangle(9, 36, 4, 11); //Down-middle
this-&gt;renderscreen::createRectangle(22, 6, 11, 4); //Top-right
this-&gt;renderscreen::createRectangle(22, 23, 11, 4); //Down-right
this-&gt;renderscreen::createRectangle(9, 1, 4, 11); //Top-middle
this-&gt;renderscreen::createRectangle(9, 18, 4, 11); //Middle-middle
} 

if(number == 9)
{
this-&gt;renderscreen::createRectangle(3, 6, 11, 4);  //Top-left              
this-&gt;renderscreen::createRectangle(9, 36, 4, 11); //Down-middle
this-&gt;renderscreen::createRectangle(22, 6, 11, 4); //Top-right
this-&gt;renderscreen::createRectangle(22, 23, 11, 4); //Down-right
this-&gt;renderscreen::createRectangle(9, 1, 4, 11); //Top-middle
this-&gt;renderscreen::createRectangle(9, 18, 4, 11); //Middle-middle
}
}

void renderscreen::sleep(unsigned int mseconds)
{
    clock_t goal = mseconds + clock();
    while (goal &gt; clock());
}

void renderscreen::countDown()
{
int v = 9;
while(v &gt; -1)
{
this-&gt;renderscreen::clear();
this-&gt;renderscreen::createNumber(v);
this-&gt;renderscreen::sleep(1000);
this-&gt;renderscreen::printOut();
std::cout &lt;&lt; &quot;________________________________________________________&quot; &lt;&lt; std::endl;
v--;
}
}
</code></pre>
<pre><code>main.cpp:
#include &lt;iostream&gt;
#include &quot;renderscreen.h&quot;

using namespace std;

int main()
{
bool allowed = false;
renderscreen screen;
int numberSel;
cout &lt;&lt; &quot;Creating rectangle...&quot; &lt;&lt; endl;
screen.createRectangle(1, 1, 10, 20);  //  Syntax int posX(Left/Right) int posY(Up/Down) int height(Up/Down(Size)) width(Left/Right(Size)) 
screen.printOut(); // Screen displays
cout &lt;&lt; &quot;Press a button to continue...&quot; &lt;&lt; endl;
cin.sync();
cin.get();
screen.clear();
cout &lt;&lt; &quot;Creating a number. Please write a number from 0 - 9: &quot; &lt;&lt; endl;
cin &gt;&gt; numberSel;
cout &lt;&lt; &quot;Creating number...&quot; &lt;&lt; endl;
screen.createNumber(numberSel);
screen.printOut();
cout &lt;&lt; &quot;Press a button to continue&quot; &lt;&lt; endl;
cin.sync();
cin.get();
cout &lt;&lt; &quot;Counting from 9 - 1...&quot; &lt;&lt; endl;
screen.countDown();
cout &lt;&lt; &quot;Hope you liked my little program for an array-renderengine, im gonna make some funny animations and maybe a little game :D&quot; &lt;&lt; endl;

cin.sync();
cin.get();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/332245/pufferüberlauf-stack-around-the-variable-x-is-corrupted</link><generator>RSS for Node</generator><lastBuildDate>Tue, 28 Apr 2026 10:57:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/332245.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 17 Apr 2015 15:11:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Pufferüberlauf &#x2F; Stack around the variable &#x27;x&#x27; is corrupted on Sat, 18 Apr 2015 11:41:15 GMT]]></title><description><![CDATA[<p>Hi<br />
Der Titel sagts schon aus, hab erst vor nen paar Wochen mit C++ angefangen und habe nun ein kleines Programm geschrieben, das mithilfe von Int-Arrays aus 1-en und 0-en Zahlen und andere pixelartige Bilder ausgeben kann. Leider tritt beim Beenden des Programmes diese beiden Fehler im Titel auf. Ich habe keine Ahnung, was mir da für ein Fehler unterlaufen ist, und deswegen suche ich hier Hilfe. Wäre echt nett, wenn mir hier jemand helfen könnte und generelle Verbesserungsvorschläge zur Disskussion bringen könnte, man muss das ja net alles lesen, überfliegen sollte (für euch) 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="🙂"
    /><br />
renderscreen.h:<br />
#include &lt;iostream&gt;<br />
#include &lt;time.h&gt;</p>
<pre><code>class renderscreen
{
public:
renderscreen();

void sleep(unsigned int mseconds);
void createRectangle(int posX, int posY, int height, int width);
void createNumber(int number);
void printOut();
void clear();
void countDown();

private:
int renderScreen[40][30]; //width(&quot;Breite&quot;) = 800, umgekehrt, weil [0][0] bei Initialisation jeweils +1
};
</code></pre>
<pre><code>renderscreen.cpp:
#include &quot;renderscreen.h&quot;

renderscreen::renderscreen()
{
	std::cout &lt;&lt; &quot;Screen is in rendering-mode&quot; &lt;&lt; std::endl;
for(int y = 40; y &gt; 0;)
{
   for(int x = 30; x &gt; 0;)
   {
   renderScreen[y][x] = 0;
   x--;
   }
y--;
}

}

void renderscreen::createRectangle(int posX, int posY, int height, int width)
{

renderScreen[posY][posX] = 1; 

int widthA = width;

while(height &gt; 0)
{

   while(width &gt; 0)
   {
   renderScreen[height + (posY -1)][width + (posX - 1)] = 1;
   width--;
   }
width = widthA;
height--;
}

}

void renderscreen::printOut()
{
for(int y = 1; y &lt; 40;)
{
   for(int x = 1; x &lt; 30;)
   {
   std::cout &lt;&lt; renderScreen[y][x] &lt;&lt; &quot; &quot;;
   x++;
   }
std::cout &lt;&lt; &quot;&quot; &lt;&lt; std::endl;
y++;
}
}

void renderscreen::clear()
{
memset(renderScreen, 0, sizeof(renderScreen));
}

void renderscreen::createNumber(int number)
{
if(number == 0)
{
this-&gt;renderscreen::createRectangle(3, 6, 11, 4);  //Top-left               /*11, 4 ---&gt; 3 = 2 über Oberkante (inkl. 0, die nicht ausgegeben wird) */
this-&gt;renderscreen::createRectangle(3, 23, 11, 4); //Down-left
this-&gt;renderscreen::createRectangle(9, 36, 4, 11); //Down-middle
this-&gt;renderscreen::createRectangle(22, 6, 11, 4); //Top-right
this-&gt;renderscreen::createRectangle(22, 23, 11, 4); //Down-right
this-&gt;renderscreen::createRectangle(9, 1, 4, 11); //Top-middle

} 

if(number == 1)
{
this-&gt;renderscreen::createRectangle(22, 6, 11, 4); //Top-right
this-&gt;renderscreen::createRectangle(22, 23, 11, 4); //Down-right
} 

if(number == 2)
{

this-&gt;renderscreen::createRectangle(3, 23, 11, 4); //Down-left
this-&gt;renderscreen::createRectangle(9, 36, 4, 11); //Down-middle
this-&gt;renderscreen::createRectangle(22, 6, 11, 4); //Top-right
this-&gt;renderscreen::createRectangle(9, 1, 4, 11); //Top-middle
this-&gt;renderscreen::createRectangle(9, 18, 4, 11); //Middle-middle
} 

if(number == 3)
{
this-&gt;renderscreen::createRectangle(9, 36, 4, 11); //Down-middle
this-&gt;renderscreen::createRectangle(22, 6, 11, 4); //Top-right
this-&gt;renderscreen::createRectangle(22, 23, 11, 4); //Down-right
this-&gt;renderscreen::createRectangle(9, 1, 4, 11); //Top-middle
this-&gt;renderscreen::createRectangle(9, 18, 4, 11); //Middle-middle
} 

if(number == 4)
{
this-&gt;renderscreen::createRectangle(3, 6, 11, 4);  //Top-left           
this-&gt;renderscreen::createRectangle(22, 6, 11, 4); //Top-right
this-&gt;renderscreen::createRectangle(22, 23, 11, 4); //Down-right
this-&gt;renderscreen::createRectangle(9, 18, 4, 11); //Middle-middle
} 

if(number == 5)
{
this-&gt;renderscreen::createRectangle(3, 6, 11, 4);  //Top-left              
this-&gt;renderscreen::createRectangle(9, 36, 4, 11); //Down-middle
this-&gt;renderscreen::createRectangle(22, 23, 11, 4); //Down-right
this-&gt;renderscreen::createRectangle(9, 1, 4, 11); //Top-middle
this-&gt;renderscreen::createRectangle(9, 18, 4, 11); //Middle-middle
} 

if(number == 6)
{
this-&gt;renderscreen::createRectangle(3, 6, 11, 4);  //Top-left               
this-&gt;renderscreen::createRectangle(3, 23, 11, 4); //Down-left
this-&gt;renderscreen::createRectangle(9, 36, 4, 11); //Down-middle
this-&gt;renderscreen::createRectangle(22, 23, 11, 4); //Down-right
this-&gt;renderscreen::createRectangle(9, 1, 4, 11); //Top-middle
this-&gt;renderscreen::createRectangle(9, 18, 4, 11); //Middle-middle
}

if(number == 7)
{
this-&gt;renderscreen::createRectangle(22, 6, 11, 4); //Top-right
this-&gt;renderscreen::createRectangle(22, 23, 11, 4); //Down-right
this-&gt;renderscreen::createRectangle(9, 1, 4, 11); //Top-middle
}

if(number == 8)
{
this-&gt;renderscreen::createRectangle(3, 6, 11, 4);  //Top-left              
this-&gt;renderscreen::createRectangle(3, 23, 11, 4); //Down-left
this-&gt;renderscreen::createRectangle(9, 36, 4, 11); //Down-middle
this-&gt;renderscreen::createRectangle(22, 6, 11, 4); //Top-right
this-&gt;renderscreen::createRectangle(22, 23, 11, 4); //Down-right
this-&gt;renderscreen::createRectangle(9, 1, 4, 11); //Top-middle
this-&gt;renderscreen::createRectangle(9, 18, 4, 11); //Middle-middle
} 

if(number == 9)
{
this-&gt;renderscreen::createRectangle(3, 6, 11, 4);  //Top-left              
this-&gt;renderscreen::createRectangle(9, 36, 4, 11); //Down-middle
this-&gt;renderscreen::createRectangle(22, 6, 11, 4); //Top-right
this-&gt;renderscreen::createRectangle(22, 23, 11, 4); //Down-right
this-&gt;renderscreen::createRectangle(9, 1, 4, 11); //Top-middle
this-&gt;renderscreen::createRectangle(9, 18, 4, 11); //Middle-middle
}
}

void renderscreen::sleep(unsigned int mseconds)
{
    clock_t goal = mseconds + clock();
    while (goal &gt; clock());
}

void renderscreen::countDown()
{
int v = 9;
while(v &gt; -1)
{
this-&gt;renderscreen::clear();
this-&gt;renderscreen::createNumber(v);
this-&gt;renderscreen::sleep(1000);
this-&gt;renderscreen::printOut();
std::cout &lt;&lt; &quot;________________________________________________________&quot; &lt;&lt; std::endl;
v--;
}
}
</code></pre>
<pre><code>main.cpp:
#include &lt;iostream&gt;
#include &quot;renderscreen.h&quot;

using namespace std;

int main()
{
bool allowed = false;
renderscreen screen;
int numberSel;
cout &lt;&lt; &quot;Creating rectangle...&quot; &lt;&lt; endl;
screen.createRectangle(1, 1, 10, 20);  //  Syntax int posX(Left/Right) int posY(Up/Down) int height(Up/Down(Size)) width(Left/Right(Size)) 
screen.printOut(); // Screen displays
cout &lt;&lt; &quot;Press a button to continue...&quot; &lt;&lt; endl;
cin.sync();
cin.get();
screen.clear();
cout &lt;&lt; &quot;Creating a number. Please write a number from 0 - 9: &quot; &lt;&lt; endl;
cin &gt;&gt; numberSel;
cout &lt;&lt; &quot;Creating number...&quot; &lt;&lt; endl;
screen.createNumber(numberSel);
screen.printOut();
cout &lt;&lt; &quot;Press a button to continue&quot; &lt;&lt; endl;
cin.sync();
cin.get();
cout &lt;&lt; &quot;Counting from 9 - 1...&quot; &lt;&lt; endl;
screen.countDown();
cout &lt;&lt; &quot;Hope you liked my little program for an array-renderengine, im gonna make some funny animations and maybe a little game :D&quot; &lt;&lt; endl;

cin.sync();
cin.get();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2450659</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450659</guid><dc:creator><![CDATA[Basti153]]></dc:creator><pubDate>Sat, 18 Apr 2015 11:41:15 GMT</pubDate></item><item><title><![CDATA[Reply to Pufferüberlauf &#x2F; Stack around the variable &#x27;x&#x27; is corrupted on Fri, 17 Apr 2015 15:18:54 GMT]]></title><description><![CDATA[<p>Hallo,<br />
editier mal bitte deinen Eintrag und pack den Code in Code tags und formatier ein wenig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450660</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450660</guid><dc:creator><![CDATA[Ruvi]]></dc:creator><pubDate>Fri, 17 Apr 2015 15:18:54 GMT</pubDate></item><item><title><![CDATA[Reply to Pufferüberlauf &#x2F; Stack around the variable &#x27;x&#x27; is corrupted on Fri, 17 Apr 2015 16:17:48 GMT]]></title><description><![CDATA[<p><a href="http://bit.ly/1PYbkXh" rel="nofollow">http://bit.ly/1PYbkXh</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450667</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450667</guid><dc:creator><![CDATA[TGGC]]></dc:creator><pubDate>Fri, 17 Apr 2015 16:17:48 GMT</pubDate></item><item><title><![CDATA[Reply to Pufferüberlauf &#x2F; Stack around the variable &#x27;x&#x27; is corrupted on Fri, 17 Apr 2015 16:33:46 GMT]]></title><description><![CDATA[<p>TGGC schrieb:</p>
<blockquote>
<p><a href="http://bit.ly/1PYbkXh" rel="nofollow">http://bit.ly/1PYbkXh</a></p>
</blockquote>
<p>Ja, real programmers nehmen immer mehr ab. Der Einzige der zunimmt scheine ich zu sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450669</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450669</guid><dc:creator><![CDATA[EOP]]></dc:creator><pubDate>Fri, 17 Apr 2015 16:33:46 GMT</pubDate></item><item><title><![CDATA[Reply to Pufferüberlauf &#x2F; Stack around the variable &#x27;x&#x27; is corrupted on Fri, 17 Apr 2015 16:47:21 GMT]]></title><description><![CDATA[<p>Geh es systematisch an.<br />
- irgendwas stimmt mit x nicht<br />
- wo verwendest du x?<br />
- was ist ein Puffer?<br />
- was ist ein Pufferüberlauf?<br />
(- wie provoziert man den und ist das eventuell sogar ein häufiges Problem?)<br />
- schreibst du etwa über den Puffer hinaus?</p>
<p>Bingo!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450670</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450670</guid><dc:creator><![CDATA[asdfgh..]]></dc:creator><pubDate>Fri, 17 Apr 2015 16:47:21 GMT</pubDate></item><item><title><![CDATA[Reply to Pufferüberlauf &#x2F; Stack around the variable &#x27;x&#x27; is corrupted on Sat, 18 Apr 2015 11:36:32 GMT]]></title><description><![CDATA[<p>[quote=&quot;Ruvi&quot;]Hallo,<br />
editier mal bitte deinen Eintrag und pack den Code in Code tags und formatier ein wenig.[/quote]<br />
Werd ich machen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450755</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450755</guid><dc:creator><![CDATA[Basti153]]></dc:creator><pubDate>Sat, 18 Apr 2015 11:36:32 GMT</pubDate></item><item><title><![CDATA[Reply to Pufferüberlauf &#x2F; Stack around the variable &#x27;x&#x27; is corrupted on Sat, 18 Apr 2015 11:44:28 GMT]]></title><description><![CDATA[<p>[quote=&quot;Ruvi&quot;]Hallo,<br />
editier mal bitte deinen Eintrag und pack den Code in Code tags und formatier ein wenig.[/quote]<br />
Ach ja und wie geht das? mit dem Code-tag komme ich net so wirklich klar</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450756</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450756</guid><dc:creator><![CDATA[Basti153]]></dc:creator><pubDate>Sat, 18 Apr 2015 11:44:28 GMT</pubDate></item><item><title><![CDATA[Reply to Pufferüberlauf &#x2F; Stack around the variable &#x27;x&#x27; is corrupted on Sat, 18 Apr 2015 11:46:09 GMT]]></title><description><![CDATA[<p>[quote=&quot;asdfgh..&quot;]Geh es systematisch an.<br />
- irgendwas stimmt mit x nicht<br />
- wo verwendest du x?<br />
- was ist ein Puffer?<br />
- was ist ein Pufferüberlauf?<br />
(- wie provoziert man den und ist das eventuell sogar ein häufiges Problem?)<br />
- schreibst du etwa über den Puffer hinaus?</p>
<p>Bingo![/quote]<br />
Hab ich schon. Wie auf etlichen anderen Websites auf denen ich schon Hilfe gesucht habe habe ich wie hier nur gesagt bekommen, wie ich es mache, was aber nie funktioniert. Dann gehe ich mal wieder auf eine andere Website, weil ich hier scheinbar auch keine wirkliche Hilfe bekommen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450757</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450757</guid><dc:creator><![CDATA[Basti153]]></dc:creator><pubDate>Sat, 18 Apr 2015 11:46:09 GMT</pubDate></item><item><title><![CDATA[Reply to Pufferüberlauf &#x2F; Stack around the variable &#x27;x&#x27; is corrupted on Sat, 18 Apr 2015 13:23:29 GMT]]></title><description><![CDATA[<p>Basti153 schrieb:</p>
<blockquote>
<p>Der Titel sagts schon aus [...] Ich habe keine Ahnung, was mir da für ein Fehler unterlaufen ist, und deswegen suche ich hier Hilfe.</p>
</blockquote>
<p>Pufferüberlauf nennt man die Fehler, wo man eigentlich auf einen bestimmten Speicherbereich zugreifen will, dann aber dabei &quot;daneben langt&quot;, z.B. mit ungültigen Array-Indizes. Genau das hast Du gemacht, wobei der &quot;Puffer&quot; hier dein <code>renderScreen</code> ist. Guck dir an, was für x- und y-Werte du verwendest. Davon sind nicht alle erlaubt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450763</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450763</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sat, 18 Apr 2015 13:23:29 GMT</pubDate></item><item><title><![CDATA[Reply to Pufferüberlauf &#x2F; Stack around the variable &#x27;x&#x27; is corrupted on Sat, 18 Apr 2015 14:56:25 GMT]]></title><description><![CDATA[<p>[quote=&quot;krümelkacker&quot;][quote=&quot;Basti153&quot;]<br />
Der Titel sagts schon aus [...] Ich habe keine Ahnung, was mir da für ein Fehler unterlaufen ist, und deswegen suche ich hier Hilfe.<br />
[/quote]<br />
Pufferüberlauf nennt man die Fehler, wo man eigentlich auf einen bestimmten Speicherbereich zugreifen will, dann aber dabei &quot;daneben langt&quot;, z.B. mit ungültigen Array-Indizes. Genau das hast Du gemacht, wobei der &quot;Puffer&quot; hier dein <code>renderScreen</code> ist. Guck dir an, was für x- und y-Werte du verwendest. Davon sind nicht alle erlaubt.[/quote]<br />
Danke, so eine Antwort habe ich gesucht <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/2450773</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450773</guid><dc:creator><![CDATA[Basti153]]></dc:creator><pubDate>Sat, 18 Apr 2015 14:56:25 GMT</pubDate></item><item><title><![CDATA[Reply to Pufferüberlauf &#x2F; Stack around the variable &#x27;x&#x27; is corrupted on Sat, 18 Apr 2015 15:03:00 GMT]]></title><description><![CDATA[<p>Wie merkbefreit bist du eigentlich?<br />
Aktivier mal BBCode bei deinen Beiträgen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450774</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450774</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 18 Apr 2015 15:03:00 GMT</pubDate></item><item><title><![CDATA[Reply to Pufferüberlauf &#x2F; Stack around the variable &#x27;x&#x27; is corrupted on Sat, 18 Apr 2015 15:19:21 GMT]]></title><description><![CDATA[<p>Basti153 schrieb:</p>
<blockquote>
<p>Hab ich schon. Wie auf etlichen anderen Websites auf denen ich schon Hilfe gesucht habe habe ich wie hier nur gesagt bekommen, wie ich es mache, was aber nie funktioniert.</p>
</blockquote>
<p>Ich habe dir eine Anleitung zur Fehlerbehebung in die Hand gegeben, weil du davon im Moment (einige Wochen C++ Erfahrung) am meisten profitierst. Wenn du die geposteten Punkte selbst bearbeitest, dann hilft dir das langfristig. Solltest du nach eigener Recherche Fragen zu den Punkten haben, dann nur her damit.</p>
<p>(Falls es dich interessiert, es gibt zu dem Fehler sogar einen ganzen Eintrag in der deutschen Wikipedia: Off-by-one-Error.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450775</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450775</guid><dc:creator><![CDATA[asdfgh..]]></dc:creator><pubDate>Sat, 18 Apr 2015 15:19:21 GMT</pubDate></item><item><title><![CDATA[Reply to Pufferüberlauf &#x2F; Stack around the variable &#x27;x&#x27; is corrupted on Sat, 18 Apr 2015 15:59:22 GMT]]></title><description><![CDATA[<p>Basti153, statt mit &quot;rohen Arrays&quot; à la <code>int[6]</code> kannst du auch mit <code>array&lt;int,6&gt;</code> aus dem <code>std</code> -Namensraum arbeiten. Das gibt es seit C++11. Es bietet Dir <em>typischerweise</em> – zumindest mit g++/libstdc++ – auch einen netten Debug-Modus an, der dir dann solche Fehler wie ungültige Indizes schon <em>viel früher</em> abfängt. Versuche am besten rohe Arrays und Zeiger zu vermeiden. Wie du gemerkt hast, ist das fehleranfällig.</p>
<p>Statt Zeiger bräuchten wir eigentlich so etwas wie eine standardisierte Familie von <code>array_view</code> -Typen, die auch einen solchen Debug-Modus anbieten. Denn oft sieht man ja Funktionen, die Zeiger + Länge übergeben bekommen. Das sollte IMHO ein einziger Parameter sein. In anderen Sprachen gibt's das ja auch oft unter dem Namen &quot;slice&quot;. Ich habe mir so etwas selbst <a href="https://github.com/sellibitze/secretshare-cxx/blob/master/slice.hpp" rel="nofollow">nachgebaut</a> (allerdings ohne &quot;checked iterators&quot;). Dieses Klassentemplate erlaubt dann z.B. folgenden Code:</p>
<pre><code class="language-cpp">void anzeigen(slice&lt;const int&gt; s) {
    while (s) {
        std::cout &lt;&lt; s.shift_ref() &lt;&lt; std::endl;  // quasi *ptr++ Äquivalent
    }
}

int main() {
    int feld[] = {1,2,3,4,5};
    std::vector&lt;int&gt; vektor = {1,2,3,4,5,6,7,8,9};
    anzeigen(feld);                               // 1 bis 5
    anzeigen(vektor);                             // 1 bis 9
    anzeigen(const_all_of(vektor).slice_from(4)); // 5 bis 9
}
</code></pre>
<p>Ich weiß, dass ich nicht perfekt bin, also überlasse ich das &quot;Indexgeprüfe&quot; lieber <code>slice&lt;T&gt;</code> im Debugmodus.</p>
<p>Warum keine Iteratoren? Weil mich Iteratoren, zumindest das, was man in C++ darunter versteht, nerven! Lineares Speicherlayout kommt zudem bei mir recht oft vor. Mein <code>slice</code> ist quasi ein Spezialfall einer &quot;Alexandrescu-Range&quot; für lineares Elementen-Layout. Was die letzten Ideen von Eric Niebler in der Richtung angehen, da bin ich leider nicht auf dem aktuellen Stand.</p>
<p>Und weil das so schön zum Thema Speichersicherheit passt hier noch ein Tipp: Rust 1.0.0-beta.2 ist jetzt veröffentlicht worden. <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="😉"
    /> SCNR</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450780</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sat, 18 Apr 2015 15:59:22 GMT</pubDate></item></channel></rss>