<?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[sizeof() - Wieso geht das?]]></title><description><![CDATA[<p>Erst mal: ich weiss wie sizeof() funktioniert <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="😉"
    /> Man gibt eine Variable ein und schon erhält man die Grösse dieser Variable. Was mich jetzt aber interessiert ist, wie sizeof() das macht. Schön und gut, eine Variable hat eine bestimmte Grösse. Aber diese wird ja in der Variable selber nicht gespeichert, oder? Das heisst, eigentlich kann man anhand der Variable selbst gar nicht wissen, wie gross sie ist! Daraus folgere ich, dass irgendwo die Grösse und die Startadresse jeder Variable gespeichert sein muss. Stimmt das? Wenn ja, wo wird das gespeichert?</p>
<p>Freue mich auf eure Antworten <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 />
MfG Glades</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/252201/sizeof-wieso-geht-das</link><generator>RSS for Node</generator><lastBuildDate>Mon, 14 Sep 2026 19:28:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/252201.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 16 Oct 2009 08:33:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to sizeof() - Wieso geht das? on Fri, 16 Oct 2009 08:33:54 GMT]]></title><description><![CDATA[<p>Erst mal: ich weiss wie sizeof() funktioniert <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="😉"
    /> Man gibt eine Variable ein und schon erhält man die Grösse dieser Variable. Was mich jetzt aber interessiert ist, wie sizeof() das macht. Schön und gut, eine Variable hat eine bestimmte Grösse. Aber diese wird ja in der Variable selber nicht gespeichert, oder? Das heisst, eigentlich kann man anhand der Variable selbst gar nicht wissen, wie gross sie ist! Daraus folgere ich, dass irgendwo die Grösse und die Startadresse jeder Variable gespeichert sein muss. Stimmt das? Wenn ja, wo wird das gespeichert?</p>
<p>Freue mich auf eure Antworten <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 />
MfG Glades</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1793232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1793232</guid><dc:creator><![CDATA[Glades]]></dc:creator><pubDate>Fri, 16 Oct 2009 08:33:54 GMT</pubDate></item><item><title><![CDATA[Reply to sizeof() - Wieso geht das? on Fri, 16 Oct 2009 08:49:04 GMT]]></title><description><![CDATA[<p>Die Variable hat einen bestimmten Typ. Den kennt der Compiler auf jeden Fall. Und der Compiler weiß selber am Besten wie das binäre Layout von diesem Typ aussieht, also auch wie viel Platz die Variablen des Typs brauchen. Damit bestimmt er schon zur Compilezeit die Größe der Variablen. sizeof angewendet auf Variablen ist also eigentlich sowas wie sizeof(typeof(var)).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1793238</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1793238</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 16 Oct 2009 08:49:04 GMT</pubDate></item><item><title><![CDATA[Reply to sizeof() - Wieso geht das? on Fri, 16 Oct 2009 09:03:34 GMT]]></title><description><![CDATA[<p>Achso. Aber wie geht das bei dynamischen Speicherreservierungen mit new? Da weiss der Compiler ja nicht wie gross die wird, oder schon?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1793244</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1793244</guid><dc:creator><![CDATA[Glades]]></dc:creator><pubDate>Fri, 16 Oct 2009 09:03:34 GMT</pubDate></item><item><title><![CDATA[Reply to sizeof() - Wieso geht das? on Fri, 16 Oct 2009 09:57:57 GMT]]></title><description><![CDATA[<p>Da funktioniert ja auch sizeof nicht, oder besser gesagt nicht so, wie du es vielleicht erwartest.</p>
<pre><code class="language-cpp">char array[10];
char *pointer = new char[10];

sizeof(array) // ergibt 10, weil array den Typ char[10] hat
sizeof(pointer) // ergibt 4, weil pointer den Typ char* hat
</code></pre>
<p>edit: * vergessen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1793245</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1793245</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Fri, 16 Oct 2009 09:57:57 GMT</pubDate></item><item><title><![CDATA[Reply to sizeof() - Wieso geht das? on Fri, 16 Oct 2009 09:47:13 GMT]]></title><description><![CDATA[<p>und vor allem ist folgendes zu beachten bei sizeof mit dynamisch reservierten Objekten:</p>
<pre><code class="language-cpp">struct Small { int i; virtual ~small() {} }; //sizeof(Small) = 4
struct Big : public Small { int many_i[100]; }; //sizeof(Big) = 101 oder so

int main()
{
  Small small;
  Big big;

  Small* pSmall_a = &amp;big;
  Small* pSmall_b = new Big();

  sizeof(small); //4
  sizeof(big);   //101
  sizeof(*pSmall_a); //4 !!!!
  sizeof(*pSmall_b); //4 !!!!

  delete pSmall_b;
}
</code></pre>
<p>kurz: sizeof beachtet nur den statischen Typ des Arguments. Und der ist bei den Pointern der statische Typ des Pointee, also hier immer Small, weil beide Pointer als Small* deklariert wurden. Es gilt nicht der dynamische Typ.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1793265</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1793265</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 16 Oct 2009 09:47:13 GMT</pubDate></item><item><title><![CDATA[Reply to sizeof() - Wieso geht das? on Fri, 16 Oct 2009 09:54:07 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">char pointer = new char[10];
sizeof(pointer) // ergibt 4, weil pointer den Typ char* hat
</code></pre>
<p>[/quote]<br />
Dann musst ihn aber auch so initialisieren <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>
<pre><code class="language-cpp">char *pointer = new char[10];
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1793274</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1793274</guid><dc:creator><![CDATA[Glades]]></dc:creator><pubDate>Fri, 16 Oct 2009 09:54:07 GMT</pubDate></item></channel></rss>