<?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[Strukturenoptimierung durch MS VS C++]]></title><description><![CDATA[<p>Alóha,<br />
es geht um die Strukturenoptimierung unter MS VS C++. Ja, ich habe bewusst<br />
MS VS C++ gesagt, weil anscheinend nur er die Strukturen optimiert. Und<br />
damit wär's auch schon gesagt, die Strukturen sollen NICHT optimiert<br />
werden. Habe alles mögliche von:</p>
<pre><code class="language-cpp">#pragma OPTIMIZE OFF
</code></pre>
<p>bishin zu:</p>
<pre><code class="language-cpp">#pragma pack(push,1)
</code></pre>
<p>versucht, doch nichts scheint zu klappen. Interessant dabei zu<br />
beobachten, parallel zu meinem Bitmapdecoder schreibe ich einen<br />
MD2-Modelloader der <strong>ebenfalls</strong> Strukturen einliesst. Das komische<br />
daran, bei beiden Projekten gibt es irgendwann die Fehlermeldung, wenn<br />
ich etwas aus den Daten auslesen möchte, dass wohl eine Access<br />
Vialation stattgefunden hat. Und bei beiden Projekten werden bei<br />
beiden Strukturinstanzen immer der Wert von '0xccccccc' angezeigt,<br />
welcher völlig unrealistisch für eine einfache Einlesung ist. Ich<br />
weiss nicht ob es nur bei mir so ist oder ob es überhaupt an MS VS C++<br />
liegt, meine Vermutung beruht aber darauf.</p>
<p>Erste Access Vialation (Bitmapdecoder):</p>
<pre><code class="language-cpp">bitmap_Image=new unsigned char[o_Bitmap.InfoHeader.biSizeImage];
</code></pre>
<p>bitmap_Image ist ein Zeiger vom Datentyp 'unsigned char', o_Bitmap ist<br />
ein Objekt von der Klasse, InfoHeader (BITMAPINFOHEADER) ein Objekt<br />
der Struktur, die ausgelesen wird und 'biSizeImage' ist die Größe der<br />
Bilddaten in Byte.</p>
<p>Die AV, Fehlermeldung dazu:</p>
<pre><code>Unbehandelte Ausnahme bei 0x7c81eb33 in Lesson1.exe: Microsoft C++-Ausnahme: std::bad_alloc an Speicherposition 0x0012f974..

+		bitmap_Image	0xcccccccc &lt;Schlechtes Ptr&gt;	unsigned char *

		biSizeImage	3435973836	unsigned long
etc.
</code></pre>
<p>Das einzige was mir bis jetzt in den Sinn kam war, dass die Struktur<br />
falsch eingelesen war (nicht der Fall), biSizeImage falsch definiert<br />
wurde (auch nicht der Fall) oder auf Speicher zugegriffen wird der<br />
nicht da ist (Oh net der Fall) und die Speicheradresseirung wird wohl<br />
auch nicht so hoch sein.</p>
<p>Deswegen muss es meines Erachtens nach an der Optimierung liegen, die MS<br />
VS C++ automatisch durchführt und zwar bei <strong>Strukturen</strong>. Kann mir irgendein MS VS C++ Experte vielleicht Rat geben, macht langsam echt<br />
keinen Spaß mehr, weil es dauernd Ärger damit gibt.</p>
<p>Vielen lieben Dank im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/225050/strukturenoptimierung-durch-ms-vs-c</link><generator>RSS for Node</generator><lastBuildDate>Thu, 01 Oct 2026 20:28:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/225050.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 18 Oct 2008 16:47:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Strukturenoptimierung durch MS VS C++ on Sat, 18 Oct 2008 16:48:02 GMT]]></title><description><![CDATA[<p>Alóha,<br />
es geht um die Strukturenoptimierung unter MS VS C++. Ja, ich habe bewusst<br />
MS VS C++ gesagt, weil anscheinend nur er die Strukturen optimiert. Und<br />
damit wär's auch schon gesagt, die Strukturen sollen NICHT optimiert<br />
werden. Habe alles mögliche von:</p>
<pre><code class="language-cpp">#pragma OPTIMIZE OFF
</code></pre>
<p>bishin zu:</p>
<pre><code class="language-cpp">#pragma pack(push,1)
</code></pre>
<p>versucht, doch nichts scheint zu klappen. Interessant dabei zu<br />
beobachten, parallel zu meinem Bitmapdecoder schreibe ich einen<br />
MD2-Modelloader der <strong>ebenfalls</strong> Strukturen einliesst. Das komische<br />
daran, bei beiden Projekten gibt es irgendwann die Fehlermeldung, wenn<br />
ich etwas aus den Daten auslesen möchte, dass wohl eine Access<br />
Vialation stattgefunden hat. Und bei beiden Projekten werden bei<br />
beiden Strukturinstanzen immer der Wert von '0xccccccc' angezeigt,<br />
welcher völlig unrealistisch für eine einfache Einlesung ist. Ich<br />
weiss nicht ob es nur bei mir so ist oder ob es überhaupt an MS VS C++<br />
liegt, meine Vermutung beruht aber darauf.</p>
<p>Erste Access Vialation (Bitmapdecoder):</p>
<pre><code class="language-cpp">bitmap_Image=new unsigned char[o_Bitmap.InfoHeader.biSizeImage];
</code></pre>
<p>bitmap_Image ist ein Zeiger vom Datentyp 'unsigned char', o_Bitmap ist<br />
ein Objekt von der Klasse, InfoHeader (BITMAPINFOHEADER) ein Objekt<br />
der Struktur, die ausgelesen wird und 'biSizeImage' ist die Größe der<br />
Bilddaten in Byte.</p>
<p>Die AV, Fehlermeldung dazu:</p>
<pre><code>Unbehandelte Ausnahme bei 0x7c81eb33 in Lesson1.exe: Microsoft C++-Ausnahme: std::bad_alloc an Speicherposition 0x0012f974..

+		bitmap_Image	0xcccccccc &lt;Schlechtes Ptr&gt;	unsigned char *

		biSizeImage	3435973836	unsigned long
etc.
</code></pre>
<p>Das einzige was mir bis jetzt in den Sinn kam war, dass die Struktur<br />
falsch eingelesen war (nicht der Fall), biSizeImage falsch definiert<br />
wurde (auch nicht der Fall) oder auf Speicher zugegriffen wird der<br />
nicht da ist (Oh net der Fall) und die Speicheradresseirung wird wohl<br />
auch nicht so hoch sein.</p>
<p>Deswegen muss es meines Erachtens nach an der Optimierung liegen, die MS<br />
VS C++ automatisch durchführt und zwar bei <strong>Strukturen</strong>. Kann mir irgendein MS VS C++ Experte vielleicht Rat geben, macht langsam echt<br />
keinen Spaß mehr, weil es dauernd Ärger damit gibt.</p>
<p>Vielen lieben Dank im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1600884</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600884</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Sat, 18 Oct 2008 16:48:02 GMT</pubDate></item><item><title><![CDATA[Reply to Strukturenoptimierung durch MS VS C++ on Sat, 18 Oct 2008 17:14:50 GMT]]></title><description><![CDATA[<p><code>std::bad_alloc</code> lässt darauf schliessen, dass du zu viel Speicher angefordert hast, und kein neuer mehr allokiert werden konnte. Hast du denn im Debugger geschaut, wie viel Speicher du anforderst und was der Exception-String aussagt? Und die übergebenen Daten in den eckigen Klammern sind korrekt?</p>
<p>Du kannst in den Projekt-Eigenschaften folgenden Eintrag ändern: C++ -&gt; Codegenerierung -&gt; Ausrichten der Strukturmember.<br />
Ich bin mir aber nicht sicher, ob das tatsächlich Auswirkungen hat, und weiss auch nicht, ob das Alignment zu den Compiler-Optimierungen zählt. Falls ja, sollte das im Debug-Modus sowieso deaktiviert sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1600895</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600895</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 18 Oct 2008 17:14:50 GMT</pubDate></item><item><title><![CDATA[Reply to Strukturenoptimierung durch MS VS C++ on Sat, 18 Oct 2008 17:15:52 GMT]]></title><description><![CDATA[<p>Das ist alles sehr wirr, und deine Schlussfolgerungen erfolgen eher ins Blaue hinein. Jedenfalls solltest du dir evtl. mal den konkreten Wert von o_Bitmap.InfoHeader.biSizeImage anschauen, schließlich ist 3435973836 auch nicht gerade klein...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1600896</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600896</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sat, 18 Oct 2008 17:15:52 GMT</pubDate></item><item><title><![CDATA[Reply to Strukturenoptimierung durch MS VS C++ on Sat, 18 Oct 2008 17:22:12 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>schließlich ist 3435973836 auch nicht gerade klein...</p>
</blockquote>
<p>3435973836 == 0xcccccccc == uninitialisiert (msvc++ debugging rtl).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1600901</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600901</guid><dc:creator><![CDATA[uninitialized]]></dc:creator><pubDate>Sat, 18 Oct 2008 17:22:12 GMT</pubDate></item><item><title><![CDATA[Reply to Strukturenoptimierung durch MS VS C++ on Sat, 18 Oct 2008 17:28:21 GMT]]></title><description><![CDATA[<p>Dann sollte das im Debug-Modus das Programm auch mit der entsprechenden Meldung unterbrechen (&quot;The variable .. is being used without being intialized&quot;).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1600903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600903</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 18 Oct 2008 17:28:21 GMT</pubDate></item><item><title><![CDATA[Reply to Strukturenoptimierung durch MS VS C++ on Sat, 18 Oct 2008 17:36:53 GMT]]></title><description><![CDATA[<p>Erstmal vielen lieben Dank das so schnelle Antworten kamen.</p>
<p>Wenn ich auf 'Ausrichten des Strukturmmember' klicke hab ich mehrere Optionen, ob ich zwischen 2, 4, 6, 8,...16 Byte etc. haben möchte. Was tun?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1600911</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600911</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Sat, 18 Oct 2008 17:36:53 GMT</pubDate></item><item><title><![CDATA[Reply to Strukturenoptimierung durch MS VS C++ on Sat, 18 Oct 2008 17:44:27 GMT]]></title><description><![CDATA[<p>way schrieb:</p>
<blockquote>
<p>Erstmal vielen lieben Dank das so schnelle Antworten kamen.</p>
<p>Wenn ich auf 'Ausrichten des Strukturmmember' klicke hab ich mehrere Optionen, ob ich zwischen 2, 4, 6, 8,...16 Byte etc. haben möchte. Was tun?</p>
</blockquote>
<p>Gar nichts. Das ist nicht das Problem.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1600922</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600922</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sat, 18 Oct 2008 17:44:27 GMT</pubDate></item><item><title><![CDATA[Reply to Strukturenoptimierung durch MS VS C++ on Sat, 18 Oct 2008 18:43:36 GMT]]></title><description><![CDATA[<p>Der Dank geht nach vielen Tagen an RedEagle, nachdem wir ziemlich lange rumexperimentiert haben, haben wir, bzw. Er etwas herausgefunden, was gleichzeitig das Problem behoben hat. Und zwar musste mit fseek zu etwas gesprungen werden, bevor es eingelesen. Naja, die Art wie und was mir MS VS C++ da ausgeben hat war ja nicht viel informativer wie die Fehlermeldungen &quot;Programm_xyz.exe musste aus einem ungeklrten Grund geschlossen werden-Problembericht senen&quot;.<br />
Trotzdem Danke ich Allen vielmals.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1600951</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600951</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Sat, 18 Oct 2008 18:43:36 GMT</pubDate></item><item><title><![CDATA[Reply to Strukturenoptimierung durch MS VS C++ on Sun, 19 Oct 2008 07:00:11 GMT]]></title><description><![CDATA[<p>way schrieb:</p>
<blockquote>
<p>Der Dank geht nach vielen Tagen an RedEagle, nachdem wir ziemlich lange rumexperimentiert haben, haben wir, bzw. Er etwas herausgefunden, was gleichzeitig das Problem behoben hat. Und zwar musste mit fseek zu etwas gesprungen werden, bevor es eingelesen. Naja, die Art wie und was mir MS VS C++ da ausgeben hat war ja nicht viel informativer wie die Fehlermeldungen &quot;Programm_xyz.exe musste aus einem ungeklrten Grund geschlossen werden-Problembericht senen&quot;.<br />
Trotzdem Danke ich Allen vielmals.</p>
</blockquote>
<p>Ein Hoch auf Mr. Allen RedEagle, Herausfinder des Monats. Während die C++-Nazis hier im Forum noch ihren std::schlagmichtot-Wahn ausleben, löst Allen die wahren Probleme im Alleingang, schnell und effizient. So wie Profis das nun mal tun.<br />
Auf den Tipp mit fseek hättest du hier ewig und drei Tage warten müssen!</p>
<p>Danke, Allen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1601104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1601104</guid><dc:creator><![CDATA[Un trollo magnifico]]></dc:creator><pubDate>Sun, 19 Oct 2008 07:00:11 GMT</pubDate></item><item><title><![CDATA[Reply to Strukturenoptimierung durch MS VS C++ on Sun, 19 Oct 2008 07:33:29 GMT]]></title><description><![CDATA[<p>Un trollo magnifico schrieb:</p>
<blockquote>
<p>Auf den Tipp mit fseek hättest du hier ewig und drei Tage warten müssen!</p>
</blockquote>
<p>seine fehlerbeschreibung war mies. das hätte sowieso niemand rausbekommen. sei doch nicht so unfair zu unserer std-doppel-doppelpünktchen-fraktion.<br />
<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/1601107</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1601107</guid><dc:creator><![CDATA[~fricky]]></dc:creator><pubDate>Sun, 19 Oct 2008 07:33:29 GMT</pubDate></item></channel></rss>