<?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[IStream::Read in std::vector - Crash..]]></title><description><![CDATA[<p>Hi!</p>
<p>Ich würde gerne einen IStream in einen std::vector einlesen.</p>
<pre><code class="language-cpp">STATSTG stat;
stream-&gt;Stat(&amp;stat, 0);

unsigned long numBytes = stat.cbSize.LowPart;

LARGE_INTEGER dummy2 = { };
stream-&gt;Seek(dummy2, STREAM_SEEK_SET, 0);
</code></pre>
<pre><code class="language-cpp">// So funkioniert es:

unsigned char* buf = new unsigned char(numBytes);

unsigned long dummy = 0;
stream-&gt;Read(buf, numBytes, &amp;dummy);
</code></pre>
<pre><code class="language-cpp">// So leider nicht, aber warum? (nachträgliches .resize() bringt auch nix)

std::vector&lt;unsigned char&gt; data(numBytes);
stream-&gt;Read(&amp;data[0], data.size(), &amp;dummy); // Vector subscript out of range
</code></pre>
<p>Kapier ich nicht. Der vector wird doch auf die Größe eingestellt. Außerdem wird Read() die .size() übergeben, also sollte auch nicht mehr eingelesen werden, als der vector (defaultkonstruierte) Elemente hat.</p>
<p><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/topic/272881/istream-read-in-std-vector-crash</link><generator>RSS for Node</generator><lastBuildDate>Fri, 28 Aug 2026 14:40:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/272881.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 26 Aug 2010 19:30:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to IStream::Read in std::vector - Crash.. on Thu, 26 Aug 2010 19:30:12 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>Ich würde gerne einen IStream in einen std::vector einlesen.</p>
<pre><code class="language-cpp">STATSTG stat;
stream-&gt;Stat(&amp;stat, 0);

unsigned long numBytes = stat.cbSize.LowPart;

LARGE_INTEGER dummy2 = { };
stream-&gt;Seek(dummy2, STREAM_SEEK_SET, 0);
</code></pre>
<pre><code class="language-cpp">// So funkioniert es:

unsigned char* buf = new unsigned char(numBytes);

unsigned long dummy = 0;
stream-&gt;Read(buf, numBytes, &amp;dummy);
</code></pre>
<pre><code class="language-cpp">// So leider nicht, aber warum? (nachträgliches .resize() bringt auch nix)

std::vector&lt;unsigned char&gt; data(numBytes);
stream-&gt;Read(&amp;data[0], data.size(), &amp;dummy); // Vector subscript out of range
</code></pre>
<p>Kapier ich nicht. Der vector wird doch auf die Größe eingestellt. Außerdem wird Read() die .size() übergeben, also sollte auch nicht mehr eingelesen werden, als der vector (defaultkonstruierte) Elemente hat.</p>
<p><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/1944778</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1944778</guid><dc:creator><![CDATA[Hi]]></dc:creator><pubDate>Thu, 26 Aug 2010 19:30:12 GMT</pubDate></item><item><title><![CDATA[Reply to IStream::Read in std::vector - Crash.. on Thu, 26 Aug 2010 20:08:32 GMT]]></title><description><![CDATA[<p>Ich seh grad, dass ich sogar</p>
<p>new unsigned char(numBytes);</p>
<p>anstatt</p>
<p>new unsigned char[numBytes];</p>
<p>geschrieben habe, also nur ein Element erstellt wird. Noch seltsamer, dass es gerade dann funktioniert..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1944787</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1944787</guid><dc:creator><![CDATA[Hi]]></dc:creator><pubDate>Thu, 26 Aug 2010 20:08:32 GMT</pubDate></item><item><title><![CDATA[Reply to IStream::Read in std::vector - Crash.. on Thu, 26 Aug 2010 22:58:29 GMT]]></title><description><![CDATA[<p>Sorry, numBytes war Null <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /><br />
Bin mir ziemlich sicher, dass es nur daran lag.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1944822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1944822</guid><dc:creator><![CDATA[Hi]]></dc:creator><pubDate>Thu, 26 Aug 2010 22:58:29 GMT</pubDate></item></channel></rss>