<?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[Objektgröße einer Klasse??]]></title><description><![CDATA[<p>Nehmen wir an... ich habe eine Klasse mit 2 int membervariablen, und 100 Memberfunktionen mit jeweils 200 zeilen code! wenn ich nun eine Instanz dieser Klasse erzeuge, wie groß ist diese dann im speicher?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/190553/objektgröße-einer-klasse</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 17:42:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/190553.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 24 Aug 2007 05:27:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Objektgröße einer Klasse?? on Fri, 24 Aug 2007 05:27:07 GMT]]></title><description><![CDATA[<p>Nehmen wir an... ich habe eine Klasse mit 2 int membervariablen, und 100 Memberfunktionen mit jeweils 200 zeilen code! wenn ich nun eine Instanz dieser Klasse erzeuge, wie groß ist diese dann im speicher?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1350827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1350827</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Fri, 24 Aug 2007 05:27:07 GMT</pubDate></item><item><title><![CDATA[Reply to Objektgröße einer Klasse?? on Fri, 24 Aug 2007 05:33:10 GMT]]></title><description><![CDATA[<p>sizeof() <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="😃"
    /></p>
<p>Funktionen tragen nicht zur Objektgröße bei falls Du das wissen möchtest. Lediglich wird über die Eigenschaft der Funktionen festgelegt, ob die Klasse z.B. eine vtable hat (keine Vererbung, keine virtuellen Funktionen -&gt; keine vtable z.B.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1350833</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1350833</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 24 Aug 2007 05:33:10 GMT</pubDate></item><item><title><![CDATA[Reply to Objektgröße einer Klasse?? on Fri, 24 Aug 2007 06:27:12 GMT]]></title><description><![CDATA[<p>also eine klasse ohne virtuelle funktionen (auch nicht in einer mutterklasse) sollte exakt so groß sein, wie die summe ihrer data-memeber inklusive aller ererbten.<br />
wenn irgendwo in der klasse selber oder in einer elternklasse (die kinder spielen hier keine rolle.) eine virtuelle funktion auftaucht, kommt noch ein zeiger auf die vtable (tabelle der virtuelle funktion) hinzu. die tabelle wird aber zentral gespeichert und spielt daher bei größe deiner klasse selber, keine rolle.<br />
nur um das nochmal deutlich herauszuheben: du kannst vererben ohne das eine vtable entsteht, wenn sowohl mutter als auch kind keine virtuellen funktionen enthalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1350862</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1350862</guid><dc:creator><![CDATA[ghorst]]></dc:creator><pubDate>Fri, 24 Aug 2007 06:27:12 GMT</pubDate></item><item><title><![CDATA[Reply to Objektgröße einer Klasse?? on Fri, 24 Aug 2007 06:57:23 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>Nehmen wir an... ich habe eine Klasse mit 2 int membervariablen, und 100 Memberfunktionen mit jeweils 200 zeilen code! wenn ich nun eine Instanz dieser Klasse erzeuge, wie groß ist diese dann im speicher?</p>
</blockquote>
<p>100 memberfunktionen.. uups <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/1350876</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1350876</guid><dc:creator><![CDATA[elise]]></dc:creator><pubDate>Fri, 24 Aug 2007 06:57:23 GMT</pubDate></item><item><title><![CDATA[Reply to Objektgröße einer Klasse?? on Fri, 24 Aug 2007 07:06:01 GMT]]></title><description><![CDATA[<p>nur mal angenommen... sind natürlich keine 100 methoden...:)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1350881</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1350881</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Fri, 24 Aug 2007 07:06:01 GMT</pubDate></item><item><title><![CDATA[Reply to Objektgröße einer Klasse?? on Fri, 24 Aug 2007 07:08:51 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class Foo {
private:
  int a,b;
public:
  void bar() {}
};
</code></pre>
<p>entspricht ziemlich genau</p>
<pre><code class="language-cpp">struct Foo {
  int a,b;
};
void bar(Foo* const this) {
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1350883</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1350883</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Fri, 24 Aug 2007 07:08:51 GMT</pubDate></item><item><title><![CDATA[Reply to Objektgröße einer Klasse?? on Fri, 24 Aug 2007 07:12:59 GMT]]></title><description><![CDATA[<p>ghorst schrieb:</p>
<blockquote>
<p>also eine klasse ohne virtuelle funktionen (auch nicht in einer mutterklasse) sollte exakt so groß sein, wie die summe ihrer data-memeber inklusive aller ererbten.</p>
</blockquote>
<p>Naja, fast - technisch spielt da noch das Padding eine Rolle, wodurch die Klasse etwas größer werden kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1350887</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1350887</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 24 Aug 2007 07:12:59 GMT</pubDate></item><item><title><![CDATA[Reply to Objektgröße einer Klasse?? on Fri, 24 Aug 2007 07:33:49 GMT]]></title><description><![CDATA[<p>in den meisten fällen, sollte da wohl kein &quot;werden kann&quot; sondern &quot;wird&quot; stehen. nur ist es unüblich die größe eines datentypes inklusive padding anzugeben. also zumindest ich habe noch nirgendwo gelesen, dass ein char 4byte groß ist. <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/1350904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1350904</guid><dc:creator><![CDATA[ghorst]]></dc:creator><pubDate>Fri, 24 Aug 2007 07:33:49 GMT</pubDate></item><item><title><![CDATA[Reply to Objektgröße einer Klasse?? on Fri, 24 Aug 2007 07:43:56 GMT]]></title><description><![CDATA[<p>ghorst schrieb:</p>
<blockquote>
<p>also zumindest ich habe noch nirgendwo gelesen, dass ein char 4byte groß ist. <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>
</blockquote>
<p>Ja, ein Datentyp alleine hat kein Padding, sondern erst im Zusammenspiel mit seinen Nachbarn. D.h. char hat Größe 1, int (z.B.) Größe 4 - und ein struct{char c;int i} kommt je nach Padding auf 5 bis 8 Byte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1350914</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1350914</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 24 Aug 2007 07:43:56 GMT</pubDate></item><item><title><![CDATA[Reply to Objektgröße einer Klasse?? on Fri, 24 Aug 2007 07:53:36 GMT]]></title><description><![CDATA[<p>das ist so nicht ganz richtig. auch datentypen außerhalb von structs werde mit einem padding versehen, so sie nicht auf die bevorzugten grenzen fallen, was bei allen datentypen deren größte ungleich der align-größe bzw. einem ganzzahligen vielfachen davon der fall ist. daher ist auch ein einzelnes char auf einem pc üblicherweise 4 byte groß.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1350920</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1350920</guid><dc:creator><![CDATA[ghorst]]></dc:creator><pubDate>Fri, 24 Aug 2007 07:53:36 GMT</pubDate></item><item><title><![CDATA[Reply to Objektgröße einer Klasse?? on Fri, 24 Aug 2007 08:43:24 GMT]]></title><description><![CDATA[<p>Nein, ein char ist ein Byte groß (wieviel Bit das sind, wird allerdings freigestellt) und muß in der Lage sein, den Speicher lückenlos zu füllen - und wenn du nur char's hast, werden die auch ohne Padding in die struct gepackt. Erst bei größeren Datentypen wie int wird der Compiler zwischen Platz und Aufwand (bei einem falsch ausgerichteten int braucht er zwei Speicheraufrufe und muß den Wert dann noch zusammensetzen) entscheiden müssen - und da setzt er dann Padding-Bytes vor das int, um es sauber ausrichten zu können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1350965</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1350965</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 24 Aug 2007 08:43:24 GMT</pubDate></item><item><title><![CDATA[Reply to Objektgröße einer Klasse?? on Fri, 24 Aug 2007 09:09:00 GMT]]></title><description><![CDATA[<p>ghorst schrieb:</p>
<blockquote>
<p>auch datentypen außerhalb von structs werde mit einem padding versehen, so sie nicht auf die bevorzugten grenzen fallen...</p>
</blockquote>
<p>ja, das ist manchmal so, aber trotzdem liefert 'sizeof' hier die grösse ohne die lückenfüller, aber wenn sizeof auf structs angewendet wird, werden diese mitgezählt.</p>
<p>CStoll schrieb:</p>
<blockquote>
<p>und wenn du nur char's hast, werden die auch ohne Padding in die struct gepackt.</p>
</blockquote>
<p>nicht unbedingt. bei char-arrays hast du recht, aber einzelne 'chars' können in einer struct auch 'gepaddet' werden.<br />
<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/1350972</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1350972</guid><dc:creator><![CDATA[Undertaker]]></dc:creator><pubDate>Fri, 24 Aug 2007 09:09:00 GMT</pubDate></item><item><title><![CDATA[Reply to Objektgröße einer Klasse?? on Fri, 24 Aug 2007 10:06:40 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Nein, ein char ist ein Byte groß (wieviel Bit das sind, wird allerdings freigestellt) und muß in der Lage sein, den Speicher lückenlos zu füllen - und wenn du nur char's hast, werden die auch ohne Padding in die struct gepackt.</p>
</blockquote>
<p>hier irrst du. es wird häufig tatsächlich billigend in kauf genommen, das keine vollständigen speicherbereiche genutzt werden. du kannst deinen compiler zwingen, das er sich anders verhält, bzw. bei großen menge an chars würde er es hoffentlich auch von selbst machen, allerdings verlierst du dann sogar bei char laufzeit, da sie dann an der unpassende stelle im register ankommen bzw. der speichercontroller sie erst umsortieren muss.</p>
<p>bei char[] gilt das natürlich nicht. hier wird tatsächlich wie bei allen anderen arrays und den packed structs auch, nur der tatsächlich benötigte bereich + abschluß-padding reserviert, damit es wieder mit zu dem alignment passt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1351021</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1351021</guid><dc:creator><![CDATA[ghorst]]></dc:creator><pubDate>Fri, 24 Aug 2007 10:06:40 GMT</pubDate></item><item><title><![CDATA[Reply to Objektgröße einer Klasse?? on Sat, 25 Aug 2007 12:42:21 GMT]]></title><description><![CDATA[<blockquote>
<p>Nehmen wir an... ich habe eine Klasse mit 2 int membervariablen, und 100 Memberfunktionen mit jeweils 200 zeilen code! wenn ich nun eine Instanz dieser Klasse erzeuge, wie groß ist diese dann im speicher?</p>
</blockquote>
<p>jenach dem<br />
z.B.<br />
2*4 + 100*4 = 408 bytes</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1351791</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1351791</guid><dc:creator><![CDATA[netrobot]]></dc:creator><pubDate>Sat, 25 Aug 2007 12:42:21 GMT</pubDate></item><item><title><![CDATA[Reply to Objektgröße einer Klasse?? on Sat, 25 Aug 2007 14:18:02 GMT]]></title><description><![CDATA[<p>Häh?<br />
Selbst bei virtuellen Funktionen wird _ein_ Zeiger auf die vtable gespeichert.<br />
Also:<br />
2*4 + 1*4 = 12 Byte // ohne Padding.</p>
<p>408 Byte wär ein bisschen heftig...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1351869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1351869</guid><dc:creator><![CDATA[Don06]]></dc:creator><pubDate>Sat, 25 Aug 2007 14:18:02 GMT</pubDate></item></channel></rss>