dynamische Speicherverwaltung/sizeof-Operator

Gast #2720740
Lesenswert?

Guten Morgen,

nachdem ich eine struct mit einer int- und einer char-Variablen erstellt 
habe, habe ich mit Hilfe des sizeof-Operators die Größe von dem 
erstellten struct ermittelt. Diese beträgt 8 Byte, obwohl die darin 
enthaltenen Datentypen nur 5 Byte aufweisen. Ist das "Gerüst" einer 
struct immer 3 Byte groß?

Vielen Dank!
#2720767
Lesenswert?

Da Mo schrieb:
> Ich dachte, dass 4 Byte(int) + 1 Byte(char) in einer struct 5 Byte
> ergeben!?

Stimmt schon. Aber wenn hinter diesen 5 Bytes gleich die nächste solche 
struct landet, dann wird der Zugriff auf deine "int" je nach Prozessor 
und Implementierung entweder langsam oder fliegt dir um die Ohren. Weil 
diese int dann nicht mehr an einer durch 4 teilbaren Adresse liegt. 
Deshalb addiert der Compiler 3 ungenutzte Bytes hinten drauf.

Wenn deine struct nicht aus einer int und einem char besteht, sondern 
aus 5 chars, dann sollten es wirklich nur 5 Bytes sein.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren