C-Klassen belegen den Speicher auf eine Weise, die durch bestimmte Regeln während der Kompilierung bestimmt wird. Die Größe einer Klasse wird basierend auf den darin enthaltenen Datenelementen und ihren jeweiligen Ausrichtungen berechnet.
Wenn der Compiler eine Klasse analysiert, wertet er jedes Datenelement der Reihe nach aus:
Nach der Verarbeitung aller Datenelemente passt der Compiler die Klassengröße so an, dass sie ein Vielfaches der gemeinsamen Ausrichtungsanforderung ist.
Im bereitgestellten Beispiel:
Beide haben ähnliche Datenelemente (zwei Char-Arrays der Größe 8), was zu einer Größe von 16 Bytes führt.
Es enthält die gleichen Datenelemente wie TestClass1 und TestClass2, aber das Datenelement __m128i erfordert eine 16-Byte-Ausrichtung. Diese Ausrichtung überschreibt die Ausrichtung der char-Arrays, was zu einer Klassengröße von 48 Byte führt (16 Byte für die Ausrichtung, dann 16 Byte für __m128i, dann 16 Byte für mehr Ausrichtung).
Diese Klasse hat die gleichen Datenelemente wie TestClass3, jedoch mit einer anderen Reihenfolge. Die Ausrichtungsregeln bleiben jedoch dieselben, was zu einer Klassengröße von 32 Bytes führt (8 Bytes für das erste char-Array, 16 Bytes für die Ausrichtung, 16 Bytes für __m128i, dann 8 Bytes für das zweite char-Array).
Diese Regeln gewährleisten eine effiziente Speicherzuweisung und -ausrichtung für optimierten Datenzugriff und Leistung.
Das obige ist der detaillierte Inhalt vonWie bestimmt der C-Compiler die Größe einer Klasse basierend auf Datenelementen und Ausrichtung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!