<?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[Herausfinden wieviel Speicher ein Pointer reserviert hat.]]></title><description><![CDATA[<p>Hallo!<br />
Wie kann ich herausbekommen wieviel Speicher ein Pointer reserviert hat?<br />
Damit meine ich echte Pointer (void*).</p>
<pre><code>int Test[10];           //Ist ja nichts anderes als ein int* mit reserviertem Speicher von 10*sizeof(int)
   void* Unbekannt = Test; //Pointer auf den ersten int in Test[]
</code></pre>
<p>Wie bekomme ich nun die 10*sizeof(int) aus der Variable Unbekannt rausgequetscht?<br />
Danke...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/260062/herausfinden-wieviel-speicher-ein-pointer-reserviert-hat</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 13:37:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/260062.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 31 Jan 2010 13:57:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Herausfinden wieviel Speicher ein Pointer reserviert hat. on Sun, 31 Jan 2010 13:57:26 GMT]]></title><description><![CDATA[<p>Hallo!<br />
Wie kann ich herausbekommen wieviel Speicher ein Pointer reserviert hat?<br />
Damit meine ich echte Pointer (void*).</p>
<pre><code>int Test[10];           //Ist ja nichts anderes als ein int* mit reserviertem Speicher von 10*sizeof(int)
   void* Unbekannt = Test; //Pointer auf den ersten int in Test[]
</code></pre>
<p>Wie bekomme ich nun die 10*sizeof(int) aus der Variable Unbekannt rausgequetscht?<br />
Danke...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1848048</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1848048</guid><dc:creator><![CDATA[JaykopX]]></dc:creator><pubDate>Sun, 31 Jan 2010 13:57:26 GMT</pubDate></item><item><title><![CDATA[Reply to Herausfinden wieviel Speicher ein Pointer reserviert hat. on Sun, 31 Jan 2010 14:07:06 GMT]]></title><description><![CDATA[<p>So erst mal gar nicht. Du musst Dir die Länge merken oder alternativ, was hässlich ist ein Sentinel-Element am Ende einfügen, was das Ende des Arrays markiert. Dann kannste den Array durchlaufen und zählen ab was das letzte Element erreicht wurde. Du kannst dann aber das Sentinel-Element nicht als eigentlichen Wert im Array verwenden.</p>
<p>BTW: Die &quot;moderne&quot; C++ Fraktion würde dich dafür schlagen, dass du keinen std::vector benutzt. <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/1848056</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1848056</guid><dc:creator><![CDATA[_Awesome_]]></dc:creator><pubDate>Sun, 31 Jan 2010 14:07:06 GMT</pubDate></item><item><title><![CDATA[Reply to Herausfinden wieviel Speicher ein Pointer reserviert hat. on Sun, 31 Jan 2010 14:21:24 GMT]]></title><description><![CDATA[<p>Ein Pointer ist immer gleich groß, jedenfalls wenn dein Programm nicht mittendrin die Plattform wechselt...<br />
sizeof(void*) == sizeof(T*);<br />
Warum ein void* ein echterer Pointer als T* ist versteh ich auch nicht.</p>
<p>Und du willst wahrscheinlich nicht sizeof(void*) sondern die Größe des Objektes (nicht Pointer) was sich hinter dem void* versteckt.<br />
Wenn du zur Laufzeit (eigentlich schon compilezeit) nicht weißt, was hinter dem void* steckt hast du ganz schlechte Chancen, das herauszufinden...<br />
Ansonsten geht das über static_cast:</p>
<pre><code class="language-cpp">int nums[10];
void* ptr = nums;
cout &lt;&lt; sizeof( static_cast&lt;int&gt;(*nums) );
</code></pre>
<p>Wobei du da sogar ein NULL nach int casten könntest.</p>
<pre><code class="language-cpp">cout &lt;&lt; sizeof( static_cast&lt;int&gt;(NULL) );
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1848067</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1848067</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Sun, 31 Jan 2010 14:21:24 GMT</pubDate></item><item><title><![CDATA[Reply to Herausfinden wieviel Speicher ein Pointer reserviert hat. on Sun, 31 Jan 2010 14:41:22 GMT]]></title><description><![CDATA[<p>JaykopX schrieb:</p>
<blockquote>
<p>Hallo!<br />
Wie kann ich herausbekommen wieviel Speicher ein Pointer reserviert hat?</p>
</blockquote>
<p>new überschreiben und dir alles merken</p>
<blockquote>
<p>Damit meine ich echte Pointer (void*).</p>
</blockquote>
<p>alle anderen pointer sind auch echt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1848078</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1848078</guid><dc:creator><![CDATA[du hecht]]></dc:creator><pubDate>Sun, 31 Jan 2010 14:41:22 GMT</pubDate></item><item><title><![CDATA[Reply to Herausfinden wieviel Speicher ein Pointer reserviert hat. on Sun, 31 Jan 2010 14:56:06 GMT]]></title><description><![CDATA[<p>@labrador<br />
Ich möchte nicht die Größe des Objektes haben, sondern wie schon erwähnt die größe des reservierten speichers.<br />
Mit &quot;echtem&quot; Pointer mein ich, dass es ein reiner Zeiger ohne Typ ist(den feinen Unterschied merkt man schnell wenn man sizeof(void) probiert).</p>
<p>Ich möchte quasi</p>
<pre><code class="language-cpp">int Test[10];           //Ist ja nichts anderes als ein int* mit reserviertem Speicher von 10*sizeof(int)
   void* Unbekannt = Test; //Pointer auf den ersten int in Test[]

   int SizeIs = sizeof(Test);  //Liefert mir 40 = 10*sizeof(int)
   SizeIs = sizeof(Unbekannt);  //Liefert mir 4, die größe eines Pointers...
</code></pre>
<p>Man sieht, das der Compiler sehr wohl weis wieviel Speicher reserviert wurde.<br />
Das wird für</p>
<pre><code class="language-cpp">int* Test = new int[10];
</code></pre>
<p>anders ausehen, aber genau dafür brauch ich das.</p>
<p>Aber ich seh schon, das ich nicht drumherumkomme die größe zu speichern. Falls wer noch was weis, dann her damit.<br />
Danke, an alle.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1848088</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1848088</guid><dc:creator><![CDATA[JaykopX]]></dc:creator><pubDate>Sun, 31 Jan 2010 14:56:06 GMT</pubDate></item><item><title><![CDATA[Reply to Herausfinden wieviel Speicher ein Pointer reserviert hat. on Sun, 31 Jan 2010 14:58:27 GMT]]></title><description><![CDATA[<p>Nimm doch einfach std::vector.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1848089</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1848089</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Sun, 31 Jan 2010 14:58:27 GMT</pubDate></item><item><title><![CDATA[Reply to Herausfinden wieviel Speicher ein Pointer reserviert hat. on Sun, 31 Jan 2010 15:05:27 GMT]]></title><description><![CDATA[<p>JaykopX schrieb:</p>
<blockquote>
<p>Hallo!<br />
Wie kann ich herausbekommen wieviel Speicher ein Pointer reserviert hat?<br />
Damit meine ich echte Pointer (void*).</p>
</blockquote>
<p>Mit standard-Mitteln und den eingebauten Implementierungen von new/delete garnicht. Du könntest new/delete natürlich überladen und ein speichermanagement dahinterlegen das sich zu jedem Pointer merkt wieviel speicher dazu gehört.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1848091</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1848091</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sun, 31 Jan 2010 15:05:27 GMT</pubDate></item><item><title><![CDATA[Reply to Herausfinden wieviel Speicher ein Pointer reserviert hat. on Sun, 31 Jan 2010 15:13:30 GMT]]></title><description><![CDATA[<p>Deine Annahme ist einfach falsch:</p>
<pre><code class="language-cpp">int a[10]; //Typ ist int[10] und NICHT int*
</code></pre>
<p>Und <code>sizeof(int[10])</code> ist eben etwas anderes als <code>sizeof(int*)</code> .<br />
Demenstprechend ist die Aussage:</p>
<p>JaykopX schrieb:</p>
<blockquote>
<p><code>int Test[10]; //Ist ja nichts anderes als ein int* mit reserviertem Speicher von 10*sizeof(int)</code></p>
</blockquote>
<p>auch falsch...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1848096</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1848096</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Sun, 31 Jan 2010 15:13:30 GMT</pubDate></item><item><title><![CDATA[Reply to Herausfinden wieviel Speicher ein Pointer reserviert hat. on Sun, 31 Jan 2010 15:15:07 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/4465">@Tachyon</a><br />
Jo, das seh ich ein.<br />
Hätte aber nicht gedacht das int[10] als eigener Typ durchgeht, und hab auch nicht damit gerechnet das er mir das richtige ausspuckt;).</p>
<p>Ja, es wird auf dem Stack angelegt, oder was meinst du mit &quot;auch falsch&quot;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1848099</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1848099</guid><dc:creator><![CDATA[JaykopX]]></dc:creator><pubDate>Sun, 31 Jan 2010 15:15:07 GMT</pubDate></item><item><title><![CDATA[Reply to Herausfinden wieviel Speicher ein Pointer reserviert hat. on Sun, 31 Jan 2010 15:24:05 GMT]]></title><description><![CDATA[<p>JaykopX schrieb:</p>
<blockquote>
<p>...oder was meinst du mit &quot;auch falsch&quot;?</p>
</blockquote>
<p>Falsch ist die Aussage, dass ein <code>int x[10]</code> das Gleiche ist, wie ein <code>int*</code> mit einem reservierten Speicher von <code>10*sizeof(int)</code> .</p>
<p>Arrays sind eigenständige Typen. Das man Arrays so leicht (und fälschlicherweise) mit Zeigern gleichsetzt, liegt am Typkonvertierungssystem von C++. Arrays eines Types werden werden bei Zuweisung an einen Zeiger des gleichen Typs ohne Murren des Kompilers automatisch <em>umgewandelt</em>. Deshalb sind Arrays und Zeiger aber trotzdem nicht das Selbe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1848107</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1848107</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Sun, 31 Jan 2010 15:24:05 GMT</pubDate></item><item><title><![CDATA[Reply to Herausfinden wieviel Speicher ein Pointer reserviert hat. on Sun, 31 Jan 2010 15:43:43 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/23399">@JaykopX</a><br />
Probier mal ein Array von int zu inkrementieren und probier mal einen Zeiger auf int zu inkrementieren. Das eine geht. Das andere nicht. Das alleine zeigt schon, dass es sich um unterschiedliche Typen handelt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1848124</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1848124</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 31 Jan 2010 15:43:43 GMT</pubDate></item></channel></rss>