<?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[Bytebuffer anlegen?]]></title><description><![CDATA[<p>Hallo Forum,</p>
<p>unter C hätte man einfach einen void Buffer angelegt:</p>
<pre><code class="language-cpp">void *vData = 0;
vData = malloc(dwSize);
</code></pre>
<p>Wie lege ich einen einfachen Bytebuffer unter c++ an?</p>
<pre><code class="language-cpp">vData = new void[1000];
</code></pre>
<p>funktioniert nicht. (Vermutlich weil void keinen Datentyp und somit keine Breite hat.)</p>
<p>Wie lege ich 100 Bytes im Speicher an? (Übergangsweise mache ich new char[100])</p>
<p>Vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/177239/bytebuffer-anlegen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 22:19:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/177239.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 29 Mar 2007 12:56:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Bytebuffer anlegen? on Thu, 29 Mar 2007 12:56:14 GMT]]></title><description><![CDATA[<p>Hallo Forum,</p>
<p>unter C hätte man einfach einen void Buffer angelegt:</p>
<pre><code class="language-cpp">void *vData = 0;
vData = malloc(dwSize);
</code></pre>
<p>Wie lege ich einen einfachen Bytebuffer unter c++ an?</p>
<pre><code class="language-cpp">vData = new void[1000];
</code></pre>
<p>funktioniert nicht. (Vermutlich weil void keinen Datentyp und somit keine Breite hat.)</p>
<p>Wie lege ich 100 Bytes im Speicher an? (Übergangsweise mache ich new char[100])</p>
<p>Vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1255316</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1255316</guid><dc:creator><![CDATA[Rolli rollt]]></dc:creator><pubDate>Thu, 29 Mar 2007 12:56:14 GMT</pubDate></item><item><title><![CDATA[Reply to Bytebuffer anlegen? on Thu, 29 Mar 2007 13:04:12 GMT]]></title><description><![CDATA[<p>In der Rangfolge der &quot;Güte&quot;:<br />
* nimm std::vector<br />
* new char[100];<br />
* bleib bei malloc();</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1255323</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1255323</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 29 Mar 2007 13:04:12 GMT</pubDate></item><item><title><![CDATA[Reply to Bytebuffer anlegen? on Thu, 29 Mar 2007 13:35:47 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>In der Rangfolge der &quot;Güte&quot;:<br />
* nimm std::vector<br />
* new char[100];<br />
* bleib bei malloc();</p>
</blockquote>
<p>Hm. In C++ gibt's dafür doch Allokatoren bzw. 'temporary_buffer'.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1255352</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1255352</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Thu, 29 Mar 2007 13:35:47 GMT</pubDate></item><item><title><![CDATA[Reply to Bytebuffer anlegen? on Thu, 29 Mar 2007 13:38:41 GMT]]></title><description><![CDATA[<p>Danke. <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="🙂"
    /><br />
Ich schaue mir mal vektor an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1255355</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1255355</guid><dc:creator><![CDATA[Rolli rollt]]></dc:creator><pubDate>Thu, 29 Mar 2007 13:38:41 GMT</pubDate></item><item><title><![CDATA[Reply to Bytebuffer anlegen? on Thu, 29 Mar 2007 13:45:21 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/5021">@Konrad</a>: Allokatoren sind mir erstmal etwas zu kompiliert. Bei get_temporary_buffer&lt;T&gt;(num) bin ich wieder beim Datentyp. Eigentlich ist doch mein Problem das es kein Datentyp Byte gibt?</p>
<p><a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-159231.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-159231.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1255369</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1255369</guid><dc:creator><![CDATA[Rolli rollt]]></dc:creator><pubDate>Thu, 29 Mar 2007 13:45:21 GMT</pubDate></item><item><title><![CDATA[Reply to Bytebuffer anlegen? on Thu, 29 Mar 2007 13:58:11 GMT]]></title><description><![CDATA[<p>Rolli rollt schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/5021">@Konrad</a>: Allokatoren sind mir erstmal etwas zu kompiliert. Bei get_temporary_buffer&lt;T&gt;(num) bin ich wieder beim Datentyp.</p>
</blockquote>
<p>Ja, das Problem mit dem Datentyp hast Du immer, wenn Du nicht 'malloc' verwendest. Ich würde mir einfach folgendes Typedef anlegen:</p>
<pre><code class="language-cpp">typedef unsigned char byte_t;
</code></pre>
<p>Das klappt auf fast allen Systemen und dort, wo es nicht zutrifft, passt man eben das Typedef an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1255385</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1255385</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Thu, 29 Mar 2007 13:58:11 GMT</pubDate></item><item><title><![CDATA[Reply to Bytebuffer anlegen? on Thu, 29 Mar 2007 13:58:34 GMT]]></title><description><![CDATA[<p>Du mußt nichts über allokatoren wissen. Die Std-Library hat einen Default-Allokator, wenn du keinen angibst. Mach mal folgendes:</p>
<pre><code class="language-cpp">std::vector&lt;char&gt; my_buffer(100);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1255386</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1255386</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Thu, 29 Mar 2007 13:58:34 GMT</pubDate></item><item><title><![CDATA[Reply to Bytebuffer anlegen? on Thu, 29 Mar 2007 14:20:29 GMT]]></title><description><![CDATA[<p>Seit C++ benutzt man new um Speicher zu reservieren bzw. zu allokieren.</p>
<p>Es gibt einen gewaltigen Unterschied zwischen Vektor und allokiertem Speicher, denn ein Vektor ist ein STL-Container. Container haben einen relativ hohen Verwaltungsaufwand im Gegensatz zu allokiertem Speicher.</p>
<p>Ein Vektor ist quasi durch die Klasse gemanaged und allokierten Speicher muss man selbst managen (dazu gehoert das das deallokieren).</p>
<p>Legt man also Wert auf Einfachheit und Benutzerfreundlichkeit sind Vektoren sicher besser, wenns aber um hohe Geschwindigkeit geht, sollte man allokierten Speicher benutzen.</p>
<p>PS: Man sollte genau soviel Speicher allokieren, wie man auch benoetigt!<br />
Hier ein Bytebuffer:</p>
<pre><code class="language-cpp">char *var = new char[size];

delete[] var;

//alternativ wie schon erwaehnt

std::vector&lt;char&gt; v1;
</code></pre>
<p>Wenn du einen Allzweckbuffer haben moechtest, dann solltest du dir Templates anschauen.</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
T *malloc(int size)
{
  T *res = new T[size];
  return res;

}
</code></pre>
<p>oder so aehnlich... hab es nicht getestet</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1255400</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1255400</guid><dc:creator><![CDATA[LMwoot]]></dc:creator><pubDate>Thu, 29 Mar 2007 14:20:29 GMT</pubDate></item><item><title><![CDATA[Reply to Bytebuffer anlegen? on Thu, 29 Mar 2007 14:16:00 GMT]]></title><description><![CDATA[<p>Ich werde doch bei char* bleiben, da ich den Datentyp sowieso schon bei anderen Buffer Funktionen verwende. Außerdem wird mir das Casten auch nicht erspart bleiben. Also bleibe ich bei char*.</p>
<p>Trotzdem vielen Dank für die Mühe <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/1255404</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1255404</guid><dc:creator><![CDATA[Rolli rollt]]></dc:creator><pubDate>Thu, 29 Mar 2007 14:16:00 GMT</pubDate></item><item><title><![CDATA[Reply to Bytebuffer anlegen? on Thu, 29 Mar 2007 14:19:12 GMT]]></title><description><![CDATA[<p>hoffe du bekommst emails... les nochmal den beitrag... habe ihn editiert!<br />
Auch doofe Logik, aber gut <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/1255408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1255408</guid><dc:creator><![CDATA[LMwoot]]></dc:creator><pubDate>Thu, 29 Mar 2007 14:19:12 GMT</pubDate></item><item><title><![CDATA[Reply to Bytebuffer anlegen? on Thu, 29 Mar 2007 14:20:09 GMT]]></title><description><![CDATA[<p>LMWoot! Dein Posting enthält leider sehr viele Fehlinformationen.</p>
<p>Ein Vector ist intern ein Array, der Zugriff ist genauso schnell wie auf ein Array. Ich kann hier (zum Glück) keinen Performancenachteili ggü. einem Array sehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1255412</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1255412</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Thu, 29 Mar 2007 14:20:09 GMT</pubDate></item><item><title><![CDATA[Reply to Bytebuffer anlegen? on Thu, 29 Mar 2007 14:21:12 GMT]]></title><description><![CDATA[<p>Hm.. also die Funktion um die es konkret geht ist:</p>
<pre><code class="language-cpp">BOOL VerQueryValue(
    const LPVOID pBlock,	// address of buffer for version resource
    LPTSTR lpSubBlock,	// address of value to retrieve
    LPVOID *lplpBuffer,	// address of buffer for version pointer
    PUINT puLen 	// address of version-value length buffer
   );
</code></pre>
<p>Beim ersten bekomme ich die Buffergröße für lplpBuffer und im zweiten Aufruf wird der Buffer befüllt.<br />
Da mache ich lieber ein kurzes char* und caste ein bißchen rum, als irgendwas Größeres, was ich nicht 100%tig verstehe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1255415</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1255415</guid><dc:creator><![CDATA[Rolli rollt]]></dc:creator><pubDate>Thu, 29 Mar 2007 14:21:12 GMT</pubDate></item><item><title><![CDATA[Reply to Bytebuffer anlegen? on Thu, 29 Mar 2007 14:26:41 GMT]]></title><description><![CDATA[<p>Also, wenn Du eh die Windows-Platform-API verwendest, kannst Du auch gleich deren Typedefs mitverwenden, also in diesem Fall 'BYTE'.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1255417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1255417</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Thu, 29 Mar 2007 14:26:41 GMT</pubDate></item><item><title><![CDATA[Reply to Bytebuffer anlegen? on Thu, 29 Mar 2007 14:47:40 GMT]]></title><description><![CDATA[<p>Wenn die Funktion einen void* will muß ich wieder von BYTE* nach void* casten... aber zumindest hätte ich dann die richtige Buffergröße genommen.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/14231">@LMwoot</a>: Ich habe keine eMail angegeben. Ich hoffe es standen keine Beleidigungen in der eMail <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="😃"
    /><br />
Dein Weg wird in meinem Fall nicht effizient sein, weil ich den Speicher nach dem Befüllen in einen struct mit dem Namen VS_FIXEDFILEINFO konvertieren muß.</p>
<p>Bei VerQueryValue() hatte ich mich vertan. Die Buffergröße ich schon durch sizeof(VS_FIXEDFILEINFO) fix vorgegeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1255442</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1255442</guid><dc:creator><![CDATA[Rolli rollt]]></dc:creator><pubDate>Thu, 29 Mar 2007 14:47:40 GMT</pubDate></item><item><title><![CDATA[Reply to Bytebuffer anlegen? on Thu, 29 Mar 2007 14:59:49 GMT]]></title><description><![CDATA[<p>also von der geschwindigkeit her ist allokierter speicher einfach schneller... ich weiss nich mehr genau unter welchem thema, aber irgendwo hier im forum wurde ein benchmark mit 10.000.000 Chars durchgefuehrt, wo der vector ueber eine minute gebraucht hat um diesen ueber seine methoden zu fuellen.... der allokierte speicher wurde in ca. 10 Sekunden gefuellt.</p>
<p>Einfach mal ausprobieren.... sicher bin ich mir da auch nicht.</p>
<p>und ich hasse microsoft spezifische abkuerzungen <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="😉"
    /> die beruehmte extrawurst!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1255447</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1255447</guid><dc:creator><![CDATA[LMwoot]]></dc:creator><pubDate>Thu, 29 Mar 2007 14:59:49 GMT</pubDate></item><item><title><![CDATA[Reply to Bytebuffer anlegen? on Thu, 29 Mar 2007 15:22:22 GMT]]></title><description><![CDATA[<p>LMwoot schrieb:</p>
<blockquote>
<p>also von der geschwindigkeit her ist allokierter speicher einfach schneller... ich weiss nich mehr genau unter welchem thema, aber irgendwo hier im forum wurde ein benchmark mit 10.000.000 Chars durchgefuehrt, ...</p>
</blockquote>
<p>Und genau in diesem Thread kam auch raus, dass bei dieser Messung Äpfel mit Birnen verglichen wurden !!!<br />
Schau Dir den Thread nochmal genau und komplett an !!!<br />
Das Allokieren eines Vektors ist nichts Anderes (und dauert nicht länger) als das eines dynamischen Arrays !</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1255466</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1255466</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 29 Mar 2007 15:22:22 GMT</pubDate></item><item><title><![CDATA[Reply to Bytebuffer anlegen? on Fri, 30 Mar 2007 00:05:07 GMT]]></title><description><![CDATA[<blockquote>
<p>wenns aber um hohe Geschwindigkeit geht, sollte man allokierten Speicher benutzen.</p>
</blockquote>
<p>Wenns um hohe Geschwindigkeit geht sollte man IMHO trotzdem mal messen wieviel es überhaupt um ist, da ein std::vector&lt;char&gt; normalerweise nicht wirklich spürbar langsamer ist als ein einfaches &quot;new&quot; - zumindest solange man nicht wirklich grosse Blöcke anfordert. &quot;new&quot; alleine ist nämlich auf vielen Systemen ein ziemlicher Killer, auch bei kleinen Blockgrössen.</p>
<p>Der einzige ernstzunehmende Overhead sollte sein dass &quot;std::vector&lt;vhar&gt;(size)&quot; alle Bytes (chars) initialisiert, was oft zu einem memset optimiert wird. Wenn man mit kleinen Blöcken arbeitet bzw. sowieso initialisierten Speicher braucht... sollte es egal sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1255688</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1255688</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 30 Mar 2007 00:05:07 GMT</pubDate></item><item><title><![CDATA[Reply to Bytebuffer anlegen? on Fri, 30 Mar 2007 08:25:39 GMT]]></title><description><![CDATA[<p>Nachtrag: Es ging mir nicht um Geschwindigkeit. Ich hatte bisher nur C gemacht und nun muß ich ein paar Module für ein paar C++'ler schreiben und wollte mich nicht lächerlich machen bzw. von Anfang an einen guten Stil anzugewöhnen. Bei unseren SW Projekten geht es nicht um Geschwindigkeit sondern viel viel viel mehr um Korrektheit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1255811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1255811</guid><dc:creator><![CDATA[Rolli rollt]]></dc:creator><pubDate>Fri, 30 Mar 2007 08:25:39 GMT</pubDate></item></channel></rss>