Wie viel speicher wird hier reserviert C?
TYP1 sind 10Byte
TYP2 sind 42Byte
und am ende ist noch ein Pointer deshalb 4Byte
Also ingesamt 46Byte ?
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.
Ich denke auch, dass hier nicht nach Padding gefragt wird. Es geht sicherlich nur darum structs an sich zu verstehen
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.
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!
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 ?
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.