C / C ++: Daten in einer Struktur packen oder auffüllen

8

Ich verwende die Code :: Blocks IDE mit dem GNU GCC Compiler.

%Vor%

sizeof(test) gibt 5 zurück.

Ich habe diese Antwort gelesen: Warum isn 't sizeof für eine Struktur gleich der Summe der sizeof jedes Mitglieds?

Wie kommt es, dass nach dem letzten char keine Auffüllung erfolgt, so dass sizeof(test) 6 oder 8 zurückgibt? Es gibt eine Menge mehr Fragen, die ich stellen könnte, wenn ich short und int usw. hinzufüge. Aber ich denke, dass diese Frage im Moment gut ist. Wäre das Auffüllen nicht einfacher für den Prozessor, um mit der Struktur zu arbeiten?

    
newprogrammer 01.04.2012, 20:05
quelle

2 Antworten

10

Die Ausrichtung von char ist nur 1, daher muss die Struktur nicht aufgefüllt werden, um eine größere Ausrichtungsanforderung zu erfüllen.

    
Puppy 01.04.2012, 20:06
quelle
1

Da Sie in den meisten Fällen zu einem bestimmten Zeitpunkt mit einem Member arbeiten oder die Adresse der Struktur übergeben, ist es dem Compiler nicht wichtig, die gesamte Struktur mehr auszurichten als die für seine Member benötigte Ausrichtung. Das heißt, wenn Sie diese Struktur zuweisen (oder sie der Funktion übergeben), muss der Prozessor sie von Element zu Element lesen. (und es wird ein wenig langsam sein).

    
asaelr 01.04.2012 22:29
quelle

Tags und Links