sizeof(class) bringt falsches Ergebnis

Heinz Koeck 100 Zuverlässigkeitspunkte
2024-04-22T09:14:30.7666667+00:00

Ich ermittle die Größe einer Klasse mit sizeof(class) und bekomme die Größe 44 obwohl die Klasse nur aus 42 Byte besteht. Was ist da falsch? intu = unsigned int, charu = unsigned char

class Field { 	 
 	// Felddaten
	intu fieldNr_ = 0;									//Nr. des Feldes
	charu fieldType_ = 0;								//Feldtyp
	charu status_ = 0;
	std::array<intu, 4> direction_;			//FeldNr. der 4 möglichen Richtungen oder 0 wenn kein Weg
	intu mainAreaNr_ = 0;								//Textnr der Bereichsbezeichnung (bei Wechsel neu anzeigen)
	intu fieldTexts = 0;								//Textnr der Texte des Feldes (4 Texte durch $ getrenntz)
	intu noWayText_ = 0;								//Textnr für Richtung gesperrt
	intu toolRequired_ = 0;							//Nr des Tools
	intu toolFlag_ = 0;									//Index der Richtung wenn Tool vorhanden

public:
	Field() {}
	Field(intu fNr) { fieldNr_ = fNr; }

	intu getFieldSize() { 
		return sizeof(Field); }

	friend class GameCtl;
	friend class ManageFiles;
	friend class OutFields;
};	// end class Field

Visual Studio
Visual Studio
Eine Familie von Microsoft-Sammlungen integrierter Entwicklungstools zum Erstellen von Anwendungen für Windows, das Web und mobile Geräte.
21 Fragen
C++
C++
Eine hochentwickelte, allgemeine Programmiersprache, die als Erweiterung der Programmiersprache C entwickelt wurde und neben den Möglichkeiten der Speicherbearbeitung auf untergeordneter Ebene auch objektorientierte, generische und funktionale Features bietet.
14 Fragen
0 Kommentare Keine Kommentare
{count} Stimmen

Akzeptierte Antwort
  1. Ivan Dragov (CONCENTRIX Corporation) 1.460 Zuverlässigkeitspunkte Microsoft-Anbieter
    2024-04-23T14:00:15.89+00:00

    Hallo Heinz,

    sizeof(myObj) oder sizeof(MyClass) geben immer die richtige Größe eines Objekts an, aber das Ergebnis ist nicht immer leicht vorherzusagen. Die Einstellung der Compileroptimierung, die Vererbung und virtuelle Funktionen können sich auf die Objektgröße auswirken. Dieses Thema wird im nächsten Artikel ausführlicher behandelt:

    How do you determine the size of an object in C++?

    Gruß,

    Ivan Dragov

    Eine Person fand diese Antwort hilfreich.

0 zusätzliche Antworten

Sortieren nach: Am hilfreichsten