<?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[Puffer mit variabler Größe]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich würde gerne eine Buffer-Klasse mit einer variablen Größe erstellen.<br />
Diese Größe soll beim Instanziieren einmal angegeben werden und danach<br />
nicht mehr veränderbar sein. Die Größe soll nicht als Template-Parameter<br />
festgelegt werden, da erst zur Laufzeit bekannt.</p>
<p>Jetzt zu meiner Frage:<br />
Brauch ich dafür wirklich zwangsläufig 2 Speicher-Allokationen?<br />
Ich kann die Größe ja nicht in der Klasse verankern, da sie je erst im<br />
Konstruktor übergeben wird. Also muss ich in der Klasse eine<br />
zweite Allokation machen.</p>
<p>Sehe ich das richtig oder habe ich einen Denkfehler?</p>
<p>Gruß,<br />
Mark</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/284171/puffer-mit-variabler-größe</link><generator>RSS for Node</generator><lastBuildDate>Sat, 22 Aug 2026 05:45:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/284171.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 27 Mar 2011 11:43:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Puffer mit variabler Größe on Sun, 27 Mar 2011 11:43:00 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich würde gerne eine Buffer-Klasse mit einer variablen Größe erstellen.<br />
Diese Größe soll beim Instanziieren einmal angegeben werden und danach<br />
nicht mehr veränderbar sein. Die Größe soll nicht als Template-Parameter<br />
festgelegt werden, da erst zur Laufzeit bekannt.</p>
<p>Jetzt zu meiner Frage:<br />
Brauch ich dafür wirklich zwangsläufig 2 Speicher-Allokationen?<br />
Ich kann die Größe ja nicht in der Klasse verankern, da sie je erst im<br />
Konstruktor übergeben wird. Also muss ich in der Klasse eine<br />
zweite Allokation machen.</p>
<p>Sehe ich das richtig oder habe ich einen Denkfehler?</p>
<p>Gruß,<br />
Mark</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2040771</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2040771</guid><dc:creator><![CDATA[Mark81]]></dc:creator><pubDate>Sun, 27 Mar 2011 11:43:00 GMT</pubDate></item><item><title><![CDATA[Reply to Puffer mit variabler Größe on Sun, 27 Mar 2011 11:47:35 GMT]]></title><description><![CDATA[<p>Du brauchst zwangsläufig eine Speicher-Allokation, aber was meinst du mit der ersten Speicherallokation? Die Allokation des Objektes selbst auf dem Heap/Stack?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2040774</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2040774</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Sun, 27 Mar 2011 11:47:35 GMT</pubDate></item><item><title><![CDATA[Reply to Puffer mit variabler Größe on Sun, 27 Mar 2011 12:00:23 GMT]]></title><description><![CDATA[<p>wxSkip schrieb:</p>
<blockquote>
<p>Du brauchst zwangsläufig eine Speicher-Allokation, aber was meinst du mit der ersten Speicherallokation? Die Allokation des Objektes selbst auf dem Heap/Stack?</p>
</blockquote>
<p>Ich dachte daran, dass der Puffer auf dem Freestore angelegt wird, wodurch<br />
ich die erste Speicherallokation habe. Hätte ich aber explizit schreiben<br />
sollen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2040779</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2040779</guid><dc:creator><![CDATA[Mark81]]></dc:creator><pubDate>Sun, 27 Mar 2011 12:00:23 GMT</pubDate></item><item><title><![CDATA[Reply to Puffer mit variabler Größe on Sun, 27 Mar 2011 12:02:37 GMT]]></title><description><![CDATA[<p>Mark81 schrieb:</p>
<blockquote>
<p>wxSkip schrieb:</p>
<blockquote>
<p>Du brauchst zwangsläufig eine Speicher-Allokation, aber was meinst du mit der ersten Speicherallokation? Die Allokation des Objektes selbst auf dem Heap/Stack?</p>
</blockquote>
<p>Ich dachte daran, dass der Puffer auf dem Freestore angelegt wird, wodurch<br />
ich die erste Speicherallokation habe. Hätte ich aber explizit schreiben<br />
sollen.</p>
</blockquote>
<p>1. Was ist der Freestore?<br />
2. Was meinst du mit dem Puffer? Die Instanz der Puffer-Klasse oder den Puffer der Puffer-Klasse selbst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2040783</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2040783</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Sun, 27 Mar 2011 12:02:37 GMT</pubDate></item><item><title><![CDATA[Reply to Puffer mit variabler Größe on Sun, 27 Mar 2011 12:17:12 GMT]]></title><description><![CDATA[<p>Also willst du dass Buffer und die Klasse selbst nur in einem gemeinsamen Speicherblock repräsentiert werden?</p>
<p>Ohne Gewehr (im Browser geschrieben):</p>
<pre><code class="language-cpp">class Object
{
public:
 BYTE* m_pbBuf;
 Object(BYTE* _pbData, ULONG _ulSize,BYTE* _BufIndex ):m_pbBuf(_BufIndex+sizeof(Object))/*Buf-pointer zeigt nun auf den verbleibenden Datenraum hinter dem Object*/
 {
   memcpy(m_pbBuf,_pbData,_ulSize); /* Kopier die Daten in der Buffer */
 }
};

BYTE* Data; //zeigt auf die zu lagernden daten.
/* pbBuf zeigt auf den neuen, einen, Speicher */
BYTE* pbBuf = (BYTE*) HeapAlloc(GetProcessHeap(), /* Oder dein eigenen Heap */
                                HEAP_ZERO_MEMORY,
                                sizeof(Object)+strlen(Data));/* Größen müssen bekannt sein */

Object* pObj = new (pbBuf) Object(Data,strlen(Data),pbBuf);/* Objekt an der Base unseres Buffers erzeugen. */
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2040789</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2040789</guid><dc:creator><![CDATA[AP0LL0]]></dc:creator><pubDate>Sun, 27 Mar 2011 12:17:12 GMT</pubDate></item></channel></rss>