array mit new erzeugen



  • hallo, hab ne kurze frage:

    char *m = new char[1000];
    cout << sizeof(m)
    

    warum liefert sizeof in dem fall 4 zurück????



  • Weil sizeof die Grösse des Objekts zurückliefert. Und die Grösse von int* ist oftmals 4 Bytes - das ist nämlich nur ein Zeiger. Was dahinter steckt, interessiert sizeof nicht. Du hast auch keine Standard-Möglichkeit, an die Grösse des dynamischen Arrays zu kommen. Speichere sie deshalb in einer separaten Variable ab oder nutze gleich STL-Container.



  • hiho,

    weil du dem sizeof-Operator eine Adresse übergibst.
    Adresse z.B.: 0x22ff7416

    - Pro Hex-Stelle brauchst du 4 bit
    - 8 Hex-Stellen sind es
    - 4*8bit = 32bit = 4Byte

    😃



  • dankeschön 🙂



  • Dweb schrieb:

    weil du dem sizeof-Operator eine Adresse übergibst.

    Nicht wirklich. Der sizeof -Operator wird zur Compilezeit ausgewertet, da weiss er noch nichts von Adressen. Wie gesagt wird der Typ int* übergeben, dessen Objektgrösse hier 4 Byte beträgt.



  • cool ist:

    int a[5];
    sizeof(a);
    

    Wie gesagt, sizeof wird zur Kompilezeit ausgewertet.


Log in to reply