<?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[struct pointer]]></title><description><![CDATA[<p>Ich habe mehrere structs welche so aussehen:</p>
<pre><code class="language-cpp">typedef struct {									// Structure For Keyboard Stuff
	bool keyDown [256];								// Holds TRUE / FALSE For Each Key
} Keys;												// Keys

typedef struct {									// Contains Information Vital To Applications
	HINSTANCE			hInstance;					// Application Instance
	LPWSTR				className;					// Application ClassName
} Application;										// Application

typedef struct {									// Window Creation Info
	Application*		application;				// Application Structure
	LPWSTR				title;						// Window Title
	int					width;						// Width
	int					height;						// Height
	int					bpp;						// Bits Per Pixel
	bool				fullscreen;					// fullscreen flag
} WindowInit;										// WindowInit

typedef struct {									// Fenster Informationen
	Keys*				keys;						// Key Structure
	HWND				hWnd;						// Fensrer Handle
	HDC					hDC;						// Device Context
	HGLRC				hRC;						// Rendering Context
	WindowInit*		init;						// Fenster Initialisierung
	bool				visible;					// Fenster sichtbar?
	bool				active;						// Ist Fenster aktiv?
} Window;											// Window
</code></pre>
<p>Dann deklariere ich mein &quot;mainwindow&quot; so global:</p>
<pre><code class="language-cpp">Window* mainwindow;
</code></pre>
<p>Wenn ich die Daten am Anfang der WinMain aber so initialisieren will:</p>
<pre><code class="language-cpp">mainwindow-&gt;init-&gt;application-&gt;className = _T(&quot;OpenGL&quot;);			// Application Klassenname
mainwindow-&gt;init-&gt;application-&gt;hInstance = hInstance;				// Application Instanz
mainwindow-&gt;init-&gt;title			= _T(&quot;OpenGL&quot;);						// Fenster Titel
mainwindow-&gt;init-&gt;width			= 640;								// Fenster Breite
mainwindow-&gt;init-&gt;height		= 480;								// Fenster Hoehe
mainwindow-&gt;init-&gt;bpp			= 32;								// Bits Per Pixel
mainwindow-&gt;init-&gt;fullscreen	= false;							// Fullscreen Flag
</code></pre>
<p>meldet der Debugger das hier:</p>
<pre><code>Eine Ausnahme (erste Chance) bei 0x00412ada Window.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00000010.
Unbehandelte Ausnahme bei 0x00412ada in Window.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00000010.
</code></pre>
<p>Nun weiß ich leider nicht wieso, denn ein NULL-Pointer ist es ja nicht. Und für andere Fehlerquellen scheint mein Wissen nicht auszureichen.</p>
<p>Wäre nett wenn mir einer helfen könnte, wie man den Fehler beheben kann <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/topic/271347/struct-pointer</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 03:32:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/271347.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 26 Jul 2010 23:06:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to struct pointer on Mon, 26 Jul 2010 23:06:34 GMT]]></title><description><![CDATA[<p>Ich habe mehrere structs welche so aussehen:</p>
<pre><code class="language-cpp">typedef struct {									// Structure For Keyboard Stuff
	bool keyDown [256];								// Holds TRUE / FALSE For Each Key
} Keys;												// Keys

typedef struct {									// Contains Information Vital To Applications
	HINSTANCE			hInstance;					// Application Instance
	LPWSTR				className;					// Application ClassName
} Application;										// Application

typedef struct {									// Window Creation Info
	Application*		application;				// Application Structure
	LPWSTR				title;						// Window Title
	int					width;						// Width
	int					height;						// Height
	int					bpp;						// Bits Per Pixel
	bool				fullscreen;					// fullscreen flag
} WindowInit;										// WindowInit

typedef struct {									// Fenster Informationen
	Keys*				keys;						// Key Structure
	HWND				hWnd;						// Fensrer Handle
	HDC					hDC;						// Device Context
	HGLRC				hRC;						// Rendering Context
	WindowInit*		init;						// Fenster Initialisierung
	bool				visible;					// Fenster sichtbar?
	bool				active;						// Ist Fenster aktiv?
} Window;											// Window
</code></pre>
<p>Dann deklariere ich mein &quot;mainwindow&quot; so global:</p>
<pre><code class="language-cpp">Window* mainwindow;
</code></pre>
<p>Wenn ich die Daten am Anfang der WinMain aber so initialisieren will:</p>
<pre><code class="language-cpp">mainwindow-&gt;init-&gt;application-&gt;className = _T(&quot;OpenGL&quot;);			// Application Klassenname
mainwindow-&gt;init-&gt;application-&gt;hInstance = hInstance;				// Application Instanz
mainwindow-&gt;init-&gt;title			= _T(&quot;OpenGL&quot;);						// Fenster Titel
mainwindow-&gt;init-&gt;width			= 640;								// Fenster Breite
mainwindow-&gt;init-&gt;height		= 480;								// Fenster Hoehe
mainwindow-&gt;init-&gt;bpp			= 32;								// Bits Per Pixel
mainwindow-&gt;init-&gt;fullscreen	= false;							// Fullscreen Flag
</code></pre>
<p>meldet der Debugger das hier:</p>
<pre><code>Eine Ausnahme (erste Chance) bei 0x00412ada Window.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00000010.
Unbehandelte Ausnahme bei 0x00412ada in Window.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00000010.
</code></pre>
<p>Nun weiß ich leider nicht wieso, denn ein NULL-Pointer ist es ja nicht. Und für andere Fehlerquellen scheint mein Wissen nicht auszureichen.</p>
<p>Wäre nett wenn mir einer helfen könnte, wie man den Fehler beheben kann <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/1932338</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1932338</guid><dc:creator><![CDATA[no_pointer]]></dc:creator><pubDate>Mon, 26 Jul 2010 23:06:34 GMT</pubDate></item><item><title><![CDATA[Reply to struct pointer on Mon, 26 Jul 2010 23:19:06 GMT]]></title><description><![CDATA[<p>hey das &quot;no_&quot; ist für no_code reserviert... such dir ein anderes präfix</p>
<p>@edit und gib doch deinen zeigern auch speicher sonst wird das nix <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1932340</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1932340</guid><dc:creator><![CDATA[no_code]]></dc:creator><pubDate>Mon, 26 Jul 2010 23:19:06 GMT</pubDate></item><item><title><![CDATA[Reply to struct pointer on Mon, 26 Jul 2010 23:18:57 GMT]]></title><description><![CDATA[<p>...ist ja schon gut.<br />
Woher soll ich denn wissen, dass es einen no_code gibt?<br />
Wollte damit nur zum Ausdruck bringen, dass es um pointer geht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1932341</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1932341</guid><dc:creator><![CDATA[pointeristvergeben]]></dc:creator><pubDate>Mon, 26 Jul 2010 23:18:57 GMT</pubDate></item><item><title><![CDATA[Reply to struct pointer on Mon, 26 Jul 2010 23:23:22 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">Window* mainwindow = new Window();
mainwindow.init = new WindowInit();
mainwindow-&gt;init.application = new Application();
</code></pre>
<p>versuch doch mal sowas an den anfang deiner main zu schreiben und dann natürlich auch die delete orgie am ende</p>
<pre><code class="language-cpp">delete mainwindow-&gt;init.application;
delete mainwindow.init;
delete mainwindow;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1932344</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1932344</guid><dc:creator><![CDATA[no_code]]></dc:creator><pubDate>Mon, 26 Jul 2010 23:23:22 GMT</pubDate></item><item><title><![CDATA[Reply to struct pointer on Mon, 26 Jul 2010 23:42:20 GMT]]></title><description><![CDATA[<p>falls dir das wie mir nicht gefällt mach die sternchen in z.11/24 raus dann brauchst nur ein</p>
<pre><code class="language-cpp">Window* mainwindow = new Window();

delete mainwindow;
</code></pre>
<p>dann müssen aber auch bis auf die ersten alle -&gt; durch . ersetzt werden</p>
<pre><code class="language-cpp">mainwindow-&gt;init.application.className = _T(&quot;OpenGL&quot;);
...
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1932349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1932349</guid><dc:creator><![CDATA[no_code]]></dc:creator><pubDate>Mon, 26 Jul 2010 23:42:20 GMT</pubDate></item><item><title><![CDATA[Reply to struct pointer on Mon, 26 Jul 2010 23:44:52 GMT]]></title><description><![CDATA[<p>Grundsätzlich musst du Zeiger initialisieren. Aber so wie no_code würd ichs nicht machen. Wenn du den Speicher jedes Mal im Anwendercode derart verschachtelt anfordern und wieder umgekehrt freigeben musst, hat das keine Zukunft. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /></p>
<p>Falls du C programmierst, schreib dir Create- und Destroy-Funktionen, welche die ganze Initialisierungs- und Aufräumarbeit abnehmen (das schliesst korrekt initialisierte Member ein):</p>
<pre><code class="language-cpp">Window* CreateWindow(/* Parameter hier */);
void DestroyWindow(Window* window);
</code></pre>
<p>Für C++: Kapsle das Ganze mit Klassen, die sich selbst verwalten und für genügend Speicher sorgen. Das hat Zukunft! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1932350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1932350</guid><dc:creator><![CDATA[no_future]]></dc:creator><pubDate>Mon, 26 Jul 2010 23:44:52 GMT</pubDate></item><item><title><![CDATA[Reply to struct pointer on Mon, 26 Jul 2010 23:56:01 GMT]]></title><description><![CDATA[<p>willst mich ärgern <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="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1932352</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1932352</guid><dc:creator><![CDATA[no_code]]></dc:creator><pubDate>Mon, 26 Jul 2010 23:56:01 GMT</pubDate></item><item><title><![CDATA[Reply to struct pointer on Mon, 26 Jul 2010 23:56:57 GMT]]></title><description><![CDATA[<p>Ich habs am Anfang natürlich nur mit</p>
<pre><code class="language-cpp">new Window;
</code></pre>
<p>probiert und window-&gt;init etc. ganz vergessen.<br />
Jetzt funktioniert zwar fast alles, aber ich bekomme es irgendiwe nicht hin ein Fenster Handle und einen Device Kontext zu erstellen.<br />
Zwar geben CreateWindowEx und GetDC true zurück, aber mein Programm schließt direkt wieder und im Debugger steht folgendes:<br />
<a href="http://yfrog.com/hqhdcp" rel="nofollow">http://yfrog.com/hqhdcp</a></p>
<p>Ansonsten kann ich jetzt alles korrekt initialisieren und löschen.<br />
Mit den Klassen realisiere ich das ganze dann, wenn erstmal die grundlegen Dinge laufen <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/1932353</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1932353</guid><dc:creator><![CDATA[pointeristvergeben]]></dc:creator><pubDate>Mon, 26 Jul 2010 23:56:57 GMT</pubDate></item><item><title><![CDATA[Reply to struct pointer on Tue, 27 Jul 2010 09:24:48 GMT]]></title><description><![CDATA[<p>Ist mehr ein WinAPI-Problem. Kann einer der Moderatoren den Thread verschieben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1932439</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1932439</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 27 Jul 2010 09:24:48 GMT</pubDate></item><item><title><![CDATA[Reply to struct pointer on Thu, 29 Jul 2010 13:32:49 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich muss den Thread nochmal ausgraben <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 />
Es funktioniert zwar jetzt alles wenn ich Debugge, aber wenn ich für Release kompiliere kommt immer eine Zugriffsverletzung, wenn ich das Programm schließe.<br />
Diese Zeile löst sie aus:</p>
<pre><code class="language-cpp">delete mainwindow;
</code></pre>
<p>Und da ich gelernt habe, das zu jedem new ein delete gehört verwundert mich das ganze jezzt, wieso das nicht klappt. Soll ich das delete einfach weg lassen oder wie?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1933573</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1933573</guid><dc:creator><![CDATA[pointeristvergeben]]></dc:creator><pubDate>Thu, 29 Jul 2010 13:32:49 GMT</pubDate></item><item><title><![CDATA[Reply to struct pointer on Thu, 29 Jul 2010 13:44:51 GMT]]></title><description><![CDATA[<p>Sieht so aus, als würdest du mehrmals <code>delete</code> aufrufen. Prüfe noch mal, ob du <code>mainwindow</code> nicht doch vorher schon freigibst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1933584</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1933584</guid><dc:creator><![CDATA[ipsec]]></dc:creator><pubDate>Thu, 29 Jul 2010 13:44:51 GMT</pubDate></item><item><title><![CDATA[Reply to struct pointer on Thu, 29 Jul 2010 14:02:11 GMT]]></title><description><![CDATA[<p>Hab den Quellcode mal aus free und delete abgesucht, und ich gebe mainwindow nur einmal frei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1933594</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1933594</guid><dc:creator><![CDATA[pointeristvergeben]]></dc:creator><pubDate>Thu, 29 Jul 2010 14:02:11 GMT</pubDate></item><item><title><![CDATA[Reply to struct pointer on Thu, 29 Jul 2010 14:44:59 GMT]]></title><description><![CDATA[<p>Alternativ: du setzt <code>mainwindow</code> zwischendurch auf einen entweder schon freigegebenen Pointer oder einen nie angeforderten. Also schememhaft:</p>
<pre><code class="language-cpp">int* a = new int;
int* mainwindow = new int;
//...
mainwindow = a;  // Speicherleck, aber erstmal unwichtig
//...
delete a;
//...
delete maindow;  // Autsch, obwohl nur einmal freigegeben
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1933610</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1933610</guid><dc:creator><![CDATA[ipsec]]></dc:creator><pubDate>Thu, 29 Jul 2010 14:44:59 GMT</pubDate></item><item><title><![CDATA[Reply to struct pointer on Thu, 29 Jul 2010 14:47:09 GMT]]></title><description><![CDATA[<p>Ich habe genau nur ein new und ein delete in meinem Code und sowas wie mainwindow = xyz ist auch nicht dabei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1933611</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1933611</guid><dc:creator><![CDATA[pointeristvergeben]]></dc:creator><pubDate>Thu, 29 Jul 2010 14:47:09 GMT</pubDate></item><item><title><![CDATA[Reply to struct pointer on Fri, 06 Aug 2010 22:06:22 GMT]]></title><description><![CDATA[<p>Also ein mainwindow-&gt;x.y.z = 10 habe ich schon drin. Vor dem delete habe ich auch mal Zero Memory ausprobiert. Doch beim schließen wird immer der Haltepunkt ausgelöst, wie wenn man F12 drückt während das Programm läuft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1937311</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1937311</guid><dc:creator><![CDATA[pointeristvergeben]]></dc:creator><pubDate>Fri, 06 Aug 2010 22:06:22 GMT</pubDate></item><item><title><![CDATA[Reply to struct pointer on Fri, 06 Aug 2010 23:15:39 GMT]]></title><description><![CDATA[<p>Hier kann dir so aber niemand wirklich helfen. Zeig Code oder bastel am besten ein Beispiel, wo dieser Fehler auch auftritt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1937325</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1937325</guid><dc:creator><![CDATA[mmmmm]]></dc:creator><pubDate>Fri, 06 Aug 2010 23:15:39 GMT</pubDate></item></channel></rss>