Wie viel Speicher benötigt dieser Datentyp?
-
Hallo,
ich bräuchte wieder eine kleine Hilfe.
Ich habe eine Prüfung gehabt und diese zurückbekommen und bin mir bei der angegeben Frage unsicher.Die Frage lautet: Geben Sie jeweils an, wieviele Byte Speicher durch den angegeben Code am Heap mindestens reserviert werden. (Padding, Alignment ausgeschlossen). oder ob der Code zulässig ist.
(short 2 byte/ int 4 byte/ Zeiger 4 byte).short (*y)[3];
-->ich hätte auf 12 gedippt. (4*3 =12).
Lösung=4,struct s{ short* a; int b};
--> ich hätte auf 8 gedippt. (4+4=8).
Lösung=0,ich würde mich sehr über eine Erklärung freuen und danke im voraus!
-
Ersteres deklariert einen Zeiger auf ein Array von drei shorts, legt also Speicher für genau einen Zeiger auf den Stack.
Letzteres deklariert keine Variable, sondern eine Struktur. Stünde da
struct s { short* a; int b} foo;
, dann hättest du recht.
Mit dem Heap hat allerdings keines der Beispiele etwas zu tun.
-
Das erste ist ein Zeiger auf ein Array mit 3 Elementen, die Antwort ist meist 4 oder 8, je nach Plattform.
Das zweite Beispiel ist wieder mal eins der typischen dummen Testbeispiele, diese struct verbraucht normalerweise 4 Byte, allerdings ist hier gemeint, dass kein Objekt erstellt wird.
-
flo20 schrieb:
short (*y)[3];
-->ich hätte auf 12 gedippt. (4*3 =12).
Lösung=4,y ist zeiger auf ein array mit 3 short. zeiger hat 4.
Was Du meintest war
short *y[3];
y ist array mit 3 zeigern auf short. das hätte 12.
flo20 schrieb:
struct s{ short* a; int b};
--> ich hätte auf 8 gedippt. (4+4=8).
Lösung=0,Code ungültig, da fehlt ein Semikolon.
-
Vielen dank für die schnellen Antworten !