sizeof(klasse) != meinen Berechungen ;)
-
Hallo,
Hab mal ne Frage. Ich habe eine Klasse mit folgenden Variablen:
Zeiger * auf Klasse;
Zeiger * auf Klasse;
Zeiger * auf char;
unsigned char; (1 Byte)
short;(2 byte)wenn ich das einzeln mit sizeof zusammenrechne, dann kommt:
4 + 4 + 4 + 1 + 2 = 15 BytesWenn ich aber ein Sizeof von der Klasse mache, kommt 20 Bytes...
Warum?
Verbrauchen die Methoden auch noch Platz?Da ich diese Klasse sehr oft brauche, wärs schon praktisch den
Speicherplatz so klein wie möglich zu machen...(Ja, es handelt sich um eine doppelt verkettete List)
Gruss,
Stefan
-
Hem, hast du vielleicht virtuelle Methoden drin? Oder vielleicht hast du RTTI eingeschaltet? Wären so die möglichen Gründe die mir spontan einfallen.
-
Wenn virtual-Methoden verwendest verbraucht das noch Speicher.
-
Nein, habe keinerlei virutal functions drin.
Aber "RTTI" sagt mir grad nichts. Wie stell ich das ein bzw. aus?Hey und danke für die schnellen antworten!!
-
Die unsigned char bzw. short-Felder werden anscheinend so aufgefüllt, dass sie an 4-Byte Grenzen liegen. 2-Byte Granularität würde hier imho eigentlich reichen, aber ich denke dein Compiler ist schlauer als ich ...
-
Also RTTI hab ich schon gefunden, aber das ist ausgestellt.
Das stimmt, daß meine char und short felder anscheinend aufgefüllt werden.
Ich könnte für beide __int16 nehmen und es kommt das selbe raus...Aber wenn ich für beide long nehme, sinds 24...
Habe VC++6, weiß einer, wo ich 2-Byte Granularität einstellen kann?
Gruss,
Stefan
-
Stefan00 schrieb:
Aber wenn ich für beide long nehme, sinds 24...
Das ist allerdings seltsam, da long auch nur 32bit groß ist (auf VC++6). Sicher, dass du keine virtuellen Funktion drin hast? Ist das eine abgeleitete Klasse?
-
ups, der Destructor war ja virtual ...
Jetzt ist alles BananeDanke!
*blindsei*