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 !


Log in to reply