Wie viel speicher wird hier reserviert C?

1 Antwort

Nicht so eindeutig zu sagen.

TYP1 hat 10 Byte, ja, aber durch das Padding wird sizeof(TYP1) trotzdem 12 sein.

TYP2 kann je nach 32/64 Bit und Padding zwischen 42 und 56 Byte groß sein.

Woher ich das weiß:Studium / Ausbildung – Student der Informatik an der HU Berlin

KarlRanseierIII  15.01.2020, 22:03

Auch bei TYP1 kommt es auf Wortbreite und alignment contraints an, ein int kann auch 16 Bit sein, TYP1 bräuchte dann kein Padding und wäre auch nur 8 Byte groß.

Ich würde mir einen schmalen Fuß machen: Antwort unter Annahme #pragma pack (1) - Dann kommt das intuitive Ergebnis raus - fertig.

Sonst müßte halt in der Aufgabe noch mehr an Infos vorhanden sein.

Und natürlich sonstige Annahmen auch angeben, Größe der Wortbreite z.B.

Lolwis111  15.01.2020, 22:05
@KarlRanseierIII

Ich denke auch, dass hier nicht nach Padding gefragt wird. Es geht sicherlich nur darum structs an sich zu verstehen

KarlRanseierIII  15.01.2020, 22:07
@Lolwis111

Kommt halt auf den Kontext der Veranstaltung an, würde ich sagen - Aber bei Hochschulen gilt meist: Wenn nicht eindeutig, mache (vernünftige) Annahmen und nenne diese, ggf. begründe warum diese Annahmen sinnvoll sind.

siralph4 
Beitragsersteller
 15.01.2020, 21:47

Padding ? weil es ein struct ist ?

Lolwis111  15.01.2020, 21:55
@siralph4

Wenn du nicht weiß was es ist dann braucht ihr das vermutlich auch nicht :)
Aber int's werden normalerweise so angelegt, dass sie an einer durch 4 teilbaren Addresse liegen (double durch 8 teilbar usw.). Deshalb schiebt der Compiler eventuell leere Bytes dazwischen, wodurch es aber schneller berechnet werden kann!

siralph4 
Beitragsersteller
 15.01.2020, 22:03
@Lolwis111

ja habs grad bei einem Inder angeschaut, also wäre Type1 12 Byte und Type2 44Byte bei einer 32Bit CPU, wäre dann 48Byte richtig ?