<?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[Zugriffsverletzung beim Schreiben von Integern]]></title><description><![CDATA[<p>Guten Abend,<br />
Ich wollte mir eine InputClass erstellen, in der ich die InputNachrichten von meine Callback-Funktion aus der WinAPI weiterleite und verarbeiten lasse.<br />
Um den Staus einzelner Tasten abfragen zukönne weise ich einen Bool-Array true oder false zu. Nun bekomme ich aber beim schreiben eine Zugriffsverletzung ?!</p>
<p>Hier ist ein Auszug meines Code:</p>
<p>Von InputClass.h</p>
<pre><code class="language-cli">class InputClass
{
public:
	InputClass();
	~InputClass();

	void Initialize();

	void KeyDown(unsigned int);
	void KeyUp(unsigned int);

	int IsKeyDown(unsigned int);

private:
	bool keyState[256];
};
</code></pre>
<p>Von InputClass.cpp</p>
<pre><code class="language-cli">void InputClass::Initialize()
{
	int i;

	for(i=0; i&lt;256; i++)
	{
		keyState[i] = false;
	}

	return;
}

void InputClass::KeyDown(unsigned int input)
{
	keyState[input] = true;
	return;
}

void InputClass::KeyUp(unsigned int input)
{
	keyState[input] = false; //Hier bekomme ich die Zugriffsverletzung
	return;
}

int InputClass::IsKeyDown(unsigned int key)
{
	return keyState[key];
}
</code></pre>
<p>Die genaue Fehlermeldung heißt und MS Visual Studio 2010:<br />
Unbehandelte Ausnahme bei 0x00ed18e9 in X10.exe: 0xC0000005: Zugriffsverletzung beim Schreiben an Position 0x0030333c.</p>
<p>Kann mir jemand sagen was ich falsch gemacht habe ? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
Vielen Danke schon mal für eure Hilfe <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>
]]></description><link>https://www.c-plusplus.net/forum/topic/285244/zugriffsverletzung-beim-schreiben-von-integern</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Apr 2026 14:12:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/285244.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 16 Apr 2011 21:05:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zugriffsverletzung beim Schreiben von Integern on Sat, 16 Apr 2011 21:05:16 GMT]]></title><description><![CDATA[<p>Guten Abend,<br />
Ich wollte mir eine InputClass erstellen, in der ich die InputNachrichten von meine Callback-Funktion aus der WinAPI weiterleite und verarbeiten lasse.<br />
Um den Staus einzelner Tasten abfragen zukönne weise ich einen Bool-Array true oder false zu. Nun bekomme ich aber beim schreiben eine Zugriffsverletzung ?!</p>
<p>Hier ist ein Auszug meines Code:</p>
<p>Von InputClass.h</p>
<pre><code class="language-cli">class InputClass
{
public:
	InputClass();
	~InputClass();

	void Initialize();

	void KeyDown(unsigned int);
	void KeyUp(unsigned int);

	int IsKeyDown(unsigned int);

private:
	bool keyState[256];
};
</code></pre>
<p>Von InputClass.cpp</p>
<pre><code class="language-cli">void InputClass::Initialize()
{
	int i;

	for(i=0; i&lt;256; i++)
	{
		keyState[i] = false;
	}

	return;
}

void InputClass::KeyDown(unsigned int input)
{
	keyState[input] = true;
	return;
}

void InputClass::KeyUp(unsigned int input)
{
	keyState[input] = false; //Hier bekomme ich die Zugriffsverletzung
	return;
}

int InputClass::IsKeyDown(unsigned int key)
{
	return keyState[key];
}
</code></pre>
<p>Die genaue Fehlermeldung heißt und MS Visual Studio 2010:<br />
Unbehandelte Ausnahme bei 0x00ed18e9 in X10.exe: 0xC0000005: Zugriffsverletzung beim Schreiben an Position 0x0030333c.</p>
<p>Kann mir jemand sagen was ich falsch gemacht habe ? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
Vielen Danke schon mal für eure Hilfe <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2050348</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2050348</guid><dc:creator><![CDATA[Frager]]></dc:creator><pubDate>Sat, 16 Apr 2011 21:05:16 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung beim Schreiben von Integern on Sat, 16 Apr 2011 21:17:52 GMT]]></title><description><![CDATA[<p>Hast du mal überprüft, welcher Wert als 'input' übergeben wird? Bei einem unsigned int ist es möglich, daß er Werte über 255 annimmt.<br />
Auerdem solltest du sichergehen, daß du wirklich ein InputClass-Objekt hast, um auf dessen Methoden zuzugreifen - und keinen nicht-initialisierten Zeiger.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2050355</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2050355</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 16 Apr 2011 21:17:52 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung beim Schreiben von Integern on Sun, 17 Apr 2011 00:01:19 GMT]]></title><description><![CDATA[<p>Frager schrieb:</p>
<blockquote>
<pre><code class="language-cli">InputClass();
	~InputClass();

	void Initialize();
</code></pre>
</blockquote>
<p>Wo kann ich Geld darauf setzen, dass du weder Konstruktoren noch Destruktoren verstanden hast? Und wettet überhaupt jemand dagegen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2050388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2050388</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 17 Apr 2011 00:01:19 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung beim Schreiben von Integern on Sun, 17 Apr 2011 00:43:39 GMT]]></title><description><![CDATA[<blockquote>
<p>Wo kann ich Geld darauf setzen, dass du weder [...]</p>
</blockquote>
<p>Das riecht nach Whisky und Zigarren.<br />
Poker? <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>Ich hatte heute (gestern?) auch schon solche Anwandlungen.</p>
<p>Was treibt sich jemand wie ich um diese unchristliche Zeit eigentlich noch in irgendwelchen Foren herum?</p>
<p>Vollmond!</p>
<p>Und morgen wieder rote Augen.</p>
<p>Gott zum Gruße</p>
<p>C.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2050392</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2050392</guid><dc:creator><![CDATA[Caligulaminus]]></dc:creator><pubDate>Sun, 17 Apr 2011 00:43:39 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung beim Schreiben von Integern on Mon, 18 Apr 2011 18:46:13 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Frager schrieb:</p>
<blockquote>
<pre><code class="language-cli">InputClass();
	~InputClass();

	void Initialize();
</code></pre>
</blockquote>
</blockquote>
<p>Kann mir mal Jemand bitte sagen was an meinen Kon- und Destruktern so falsch sein soll ?<br />
Oder soll das darauf abzielen, dass ich keine Funktion Initialize() brauche, da doch der Konstruktor aufgerufen wird ?</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a> Danke für deinen Tipp werde es gleich mal versuchen <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2051333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2051333</guid><dc:creator><![CDATA[Frager]]></dc:creator><pubDate>Mon, 18 Apr 2011 18:46:13 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung beim Schreiben von Integern on Mon, 18 Apr 2011 18:52:28 GMT]]></title><description><![CDATA[<p>Frager schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Frager schrieb:</p>
<blockquote>
<pre><code class="language-cli">InputClass();
	~InputClass();

	void Initialize();
</code></pre>
</blockquote>
</blockquote>
<p>Kann mir mal Jemand bitte sagen was an meinen Kon- und Destruktern so falsch sein soll ?<br />
Oder soll das darauf abzielen, dass ich keine Funktion Initialize() brauche, da doch der Konstruktor aufgerufen wird ?</p>
</blockquote>
<p>Ja.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2051336</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2051336</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Mon, 18 Apr 2011 18:52:28 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung beim Schreiben von Integern on Mon, 18 Apr 2011 18:53:57 GMT]]></title><description><![CDATA[<p>Vor allem fällt auf, daß die Klasse nichts enthält, was einen expliziten Konstruktor oder Destruktor benötigt.</p>
<p>Frager schrieb:</p>
<blockquote>
<p>in der ich die InputNachrichten von meine Callback-Funktion aus der WinAPI weiterleite und verarbeiten lasse.</p>
</blockquote>
<p>Mir ist beim noch im Nachhinein aufgefallen: Wozu machst du dir überhaupt die Mühe, wo du den Status der Tastatur auch über GetKeyState() bzw. GetAsyncKeyState() abfragen kannst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2051337</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2051337</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 18 Apr 2011 18:53:57 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung beim Schreiben von Integern on Mon, 18 Apr 2011 19:57:09 GMT]]></title><description><![CDATA[<p>bei directx geht zum beispiel ein klein wenig anders<br />
da wird ein ganzes array mit bool bzw floats gefüllt je nachdem ob (und bei floats wie weit) eine taste gedrückt wurde, so kriegt man ganz gut mit, ob mehrere tasten gedrückt wurden usw.</p>
<p>GetAsyncKeyState() ist im gegensatz dazu viel schlechter geeignet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2051360</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2051360</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 18 Apr 2011 19:57:09 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung beim Schreiben von Integern on Tue, 19 Apr 2011 07:06:36 GMT]]></title><description><![CDATA[<p>GetKeyboardState füllt ein Array mit den Stati aller Tasten, könnte dir etwas Arbeit abnehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2051459</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2051459</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Tue, 19 Apr 2011 07:06:36 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung beim Schreiben von Integern on Tue, 19 Apr 2011 07:21:25 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Vor allem fällt auf, daß die Klasse nichts enthält, was einen expliziten Konstruktor oder Destruktor benötigt.</p>
</blockquote>
<p>Ich bilde mir ein, dass bei einem weggelassenen Konstruktor das Array nicht initialisiert wird, bei einem leeren Konstruktor aber schon. Kann sein, dass ich das jetzt verwechsle und es vom POD-Status abhängt, welcher in dem Fall schon durch den privaten Member nicht mehr gegeben wäre.<br />
In jedem Fall brauch man aber keinen Destruktor, da hast du Recht.</p>
<p>Btw, <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/18927">@DocShoe</a>: der Plural von Status ist Status mit langem u (gehört zur gleichen Wortgruppe wie z.B. Sinus oder Kasus, da ist das auch so). Schön umgangssprachlich kann man auch Statuse sagen, aber bitte kein falscher lateinischer Plural.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2051462</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2051462</guid><dc:creator><![CDATA[ipsec]]></dc:creator><pubDate>Tue, 19 Apr 2011 07:21:25 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung beim Schreiben von Integern on Tue, 19 Apr 2011 07:43:01 GMT]]></title><description><![CDATA[<p>ipsec schrieb:</p>
<blockquote>
<p>Ich bilde mir ein, dass bei einem weggelassenen Konstruktor das Array nicht initialisiert wird, bei einem leeren Konstruktor aber schon.</p>
</blockquote>
<p>Dann bilde dich weiter <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="😉"
    /> Der compilergenerierte Ctor macht exakt das Selbe wie ein leerer Default-Ctor</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2051469</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2051469</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 19 Apr 2011 07:43:01 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung beim Schreiben von Integern on Tue, 19 Apr 2011 07:54:41 GMT]]></title><description><![CDATA[<p>Ja, jetzt weiß ichs wieder: deine Aussage stimmt nicht ganz. Bei einer POD-Klasse werden die Member (wie das Array) nicht initialisiert (außer bei solchen Geschichten wie <code>MyClass x = MyClass()</code> ). Ein expliziter userdefined Konstruktor (auch ein leerer) hebt aber den POD-Status auf, womit das Array mit <code>false</code> initialisiert werden würde.<br />
Im konkreten Fall ist die Klasse aber sowieso kein POD, weil das Array privat ist, somit kann man den Konstruktor auch weg lassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2051475</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2051475</guid><dc:creator><![CDATA[ipsec]]></dc:creator><pubDate>Tue, 19 Apr 2011 07:54:41 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung beim Schreiben von Integern on Tue, 19 Apr 2011 21:36:52 GMT]]></title><description><![CDATA[<p>Danke für eure Hilfe und Ratschläge <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>
<p>Ich habe den Fehler gefunden ... reine Blödheit von mir !!!<br />
ich habe bei den WM_KEYUP Message den LPARAM-WERT GENOMMEN !!!!<br />
Und dann immer einen Schwachsinns-wert erhalten ... kein Wunder ! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Trotzdem Danke für eure Hilfe <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2051835</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2051835</guid><dc:creator><![CDATA[Frager]]></dc:creator><pubDate>Tue, 19 Apr 2011 21:36:52 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung beim Schreiben von Integern on Tue, 19 Apr 2011 22:40:13 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/16077">@ipsec</a>:<br />
Nö, der leere explizit definierte Ctor macht schon immer genau das selbe wie ein implizit definierter Default-Ctor.</p>
<p>Bloss führt z.B. <code>new T()</code> nicht unbedingt den Default-Ctor aus, und da liegt der Hund begraben:</p>
<pre><code class="language-cpp">new POD; // uninitialized
new POD(); // default initialized == zero initialized
new NON_POD; // default initialized == default ctor
new NON_POD(); // default initialized == default ctor
</code></pre>
<p>Daraus können sich dann einige Überraschungen ergeben. Nach <code>new POD()</code> sind nämlich hübsch alle Member Null, nach <code>new NON_POD()</code> allerdings sind alle POD-Member uninitialisiert, sofern man sie nicht explizit im Ctor initialisiert hat (was ein impliziter Default-Ctor oder leerer expliziter Ctor ja nicht macht).</p>
<p>Siehe auch hier: <a href="http://www.c-plusplus.net/forum/p2021136#2021136" rel="nofollow">http://www.c-plusplus.net/forum/p2021136#2021136</a></p>
<p>----</p>
<p>Wobei sich für mich gerade die Frage stellt: haben PODs überhaupt einen Default-Ctor? Ich wüsste zumindest gerade keine Syntax mit der dieser aufgerufen werden könnte. (Und wenn sie einen haben, dann tut er garantiert genau nichts -- von daher ist die Frage ziemlich akademisch.)</p>
<p>----</p>
<p>Auch stimmt das was du über Arrays geschrieben hast nicht. Auch ein explizit definierter leerer Konstruktor initialisiert diese nicht, sofern sie PODs sind. Muss man selbst machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2051848</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2051848</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 19 Apr 2011 22:40:13 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung beim Schreiben von Integern on Wed, 20 Apr 2011 00:41:00 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Wobei sich für mich gerade die Frage stellt: haben PODs überhaupt einen Default-Ctor? Ich wüsste zumindest gerade keine Syntax mit der dieser aufgerufen werden könnte. (Und wenn sie einen haben, dann tut er garantiert genau nichts -- von daher ist die Frage ziemlich akademisch.)</p>
</blockquote>
<p>Rein akademisch, ja.<br />
12.1./5 S. 2: Alle Klassen ohne explizit deklarierten Konstruktor, also erst recht alle POD-Klassen, haben einen Defaultkonstruktor.</p>
<p>Der wird im Falle von POD-Klassen weder für default- noch für value-Initialisierung benutzt (8.5). Da ein Konstruktoraufruf immer zur Initialisierung eines Objektes führt, folgt im Umkehrschluss, dass der Defaultkonstruktor einer POD-Klasse niemals aufgerufen wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2051865</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2051865</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 20 Apr 2011 00:41:00 GMT</pubDate></item></channel></rss>