<?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[nicht genug speicher reserviert]]></title><description><![CDATA[<p>hallo,<br />
ich habe ein Problem mit einer Funktion, die eine Textur laden soll, in diesem Fall eine unkomprimierte TGA-Datei. Dabei sollen die Bilddaten in ImageData, einem array von GLubyte, gespeichert werden. Die benötigte Größe ist in ImageSize gespeichert.</p>
<pre><code class="language-cpp">GLubyte* ImageData;
size_t ImageSize;
</code></pre>
<p>Dann soll mit new der benötigte Speicher bereitgestellt werden:</p>
<pre><code class="language-cpp">ImageData = new GLubyte[ImageSize];
</code></pre>
<p>Allerdings ist ImageData vor und nach dieser Zeile nur 4 byte groß, dabei enthält ImageSize einen wesentlich höheren Wert. Wenn ich trotzdem versuche die TGA-Datei einzulesen erhalte ich einen &quot;segmentation fault (core dumped)&quot;, was ja auch nicht verwunderlich ist. Allerdings verstehe ich beim besten Willen nicht, warum ImageData nach dem Aufruf von new nicht ImageSize byte groß ist....</p>
<p>Vielen Dank schonmal <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="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/177273/nicht-genug-speicher-reserviert</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 23:26:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/177273.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 29 Mar 2007 17:52:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to nicht genug speicher reserviert on Thu, 29 Mar 2007 17:52:37 GMT]]></title><description><![CDATA[<p>hallo,<br />
ich habe ein Problem mit einer Funktion, die eine Textur laden soll, in diesem Fall eine unkomprimierte TGA-Datei. Dabei sollen die Bilddaten in ImageData, einem array von GLubyte, gespeichert werden. Die benötigte Größe ist in ImageSize gespeichert.</p>
<pre><code class="language-cpp">GLubyte* ImageData;
size_t ImageSize;
</code></pre>
<p>Dann soll mit new der benötigte Speicher bereitgestellt werden:</p>
<pre><code class="language-cpp">ImageData = new GLubyte[ImageSize];
</code></pre>
<p>Allerdings ist ImageData vor und nach dieser Zeile nur 4 byte groß, dabei enthält ImageSize einen wesentlich höheren Wert. Wenn ich trotzdem versuche die TGA-Datei einzulesen erhalte ich einen &quot;segmentation fault (core dumped)&quot;, was ja auch nicht verwunderlich ist. Allerdings verstehe ich beim besten Willen nicht, warum ImageData nach dem Aufruf von new nicht ImageSize byte groß ist....</p>
<p>Vielen Dank schonmal <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="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1255538</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1255538</guid><dc:creator><![CDATA[aNTichRisT]]></dc:creator><pubDate>Thu, 29 Mar 2007 17:52:37 GMT</pubDate></item><item><title><![CDATA[Reply to nicht genug speicher reserviert on Thu, 29 Mar 2007 18:06:42 GMT]]></title><description><![CDATA[<p>Hallo</p>
<blockquote>
<p>Allerdings ist ImageData vor und nach dieser Zeile nur 4 byte groß</p>
</blockquote>
<p>Wenn du das hier ausfürhst</p>
<pre><code class="language-cpp">sizeof(ImageData);
</code></pre>
<p>wirst du immer auf 32-bit System 4 erhalten. Denn ImageData ist ein Pointer und Pointer sind immer gleich groß, egal auf wieviel Speicher sie zeigen.<br />
Du müßtest also schauen wie groß der Speicher ist auf den ImageData zeigt.<br />
Da kannst du allerdings dem Operator new vertrauen. Wenn dein Programm nicht von einer Exception unterbrochen wird (weil nicht mehr genug freier zusammenhängender Speicher da ist) ist in der Tat genau so viel Speicher reserviert wie angegeben.</p>
<p>Dein Problem liegt also wo anders. Das werden aber eher die Kenner der Library, die du benutzt, rausfinden.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1255544</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1255544</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Thu, 29 Mar 2007 18:06:42 GMT</pubDate></item><item><title><![CDATA[Reply to nicht genug speicher reserviert on Thu, 29 Mar 2007 18:09:09 GMT]]></title><description><![CDATA[<p>Wie hast du denn die Größe abgefragt? <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="😮"
    /> Weil die kannst du garnicht abfragen! das was du wahrscheinlich gemacht hast, ist die Größe des Pointers. Die Größe von ImageData mußt du dir selber irgendwo merken. Aber das hast du ja mit ImageSize indirekt schon gemacht.</p>
<p>Wenn du es konfortabler haben willst, würde ich das so machen:</p>
<pre><code class="language-cpp">std::vector&lt;GLubyte&gt; ImageData(ImageSize);
cout &lt;&lt; ImageData.size();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1255545</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1255545</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Thu, 29 Mar 2007 18:09:09 GMT</pubDate></item><item><title><![CDATA[Reply to nicht genug speicher reserviert on Thu, 29 Mar 2007 18:17:22 GMT]]></title><description><![CDATA[<p>ok, dann hatte ich da einen Denkfehler drin.<br />
Aber wenn ich new vertraue und mittels SDL versuche die Bilddaten auszulesen:</p>
<pre><code class="language-cpp">SDL_RWread(File, &amp;ImageData, ImageSize, 1);
</code></pre>
<p>erhalte ich den Fehler &quot;segmentation fault (core dumped)&quot;. Woran liegt das? Mit derselben Funktion lese ich weiter oben im Code schon den Header der TGA-Datei ohne Probleme aus, warum kommt hier dann ein Fehler?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1255549</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1255549</guid><dc:creator><![CDATA[aNTichRisT]]></dc:creator><pubDate>Thu, 29 Mar 2007 18:17:22 GMT</pubDate></item><item><title><![CDATA[Reply to nicht genug speicher reserviert on Thu, 29 Mar 2007 19:00:05 GMT]]></title><description><![CDATA[<p>Wie sieht denn die Signatur von SDL_RWread aus? Ich wette du hast den zweiten Parameter falsch übergeben (pointer auf pointer).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1255573</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1255573</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Thu, 29 Mar 2007 19:00:05 GMT</pubDate></item><item><title><![CDATA[Reply to nicht genug speicher reserviert on Thu, 29 Mar 2007 19:19:28 GMT]]></title><description><![CDATA[<p>Wette gewonnen <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="😉"
    /> ^^</p>
<p>Ok, vielen Dank, ich werde mich wohl mal noch etwas genauer mit Pointern beschäftigen müssen <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/1255581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1255581</guid><dc:creator><![CDATA[aNTichRisT]]></dc:creator><pubDate>Thu, 29 Mar 2007 19:19:28 GMT</pubDate></item></channel></rss>